-void CoreBufferSyncer::removeBuffer(BufferId bufferId) {
- BufferInfo bufferInfo = Core::getBufferInfo(_coreSession->user(), bufferId);
- if(!bufferInfo.isValid()) {
- qWarning() << "CoreBufferSyncer::removeBuffer(): invalid BufferId:" << bufferId << "for User:" << _coreSession->user();
- return;
- }
-
- if(bufferInfo.type() == BufferInfo::StatusBuffer) {
- qWarning() << "CoreBufferSyncer::removeBuffer(): Status Buffers cannot be removed!";
- return;
- }
-
- if(bufferInfo.type() == BufferInfo::ChannelBuffer) {
- CoreNetwork *net = _coreSession->network(bufferInfo.networkId());
- if(!net) {
- qWarning() << "CoreBufferSyncer::removeBuffer(): Received BufferInfo with unknown networkId!";
- return;
+void CoreBufferSyncer::storeDirtyIds()
+{
+ UserId userId = _coreSession->user();
+ MsgId msgId;
+ foreach (BufferId bufferId, dirtyLastSeenBuffers) {
+ msgId = lastSeenMsg(bufferId);
+ if (msgId.isValid())
+ Core::setBufferLastSeenMsg(userId, bufferId, msgId);
+ }
+
+ foreach (BufferId bufferId, dirtyMarkerLineBuffers) {
+ msgId = markerLine(bufferId);
+ if (msgId.isValid())
+ Core::setBufferMarkerLineMsg(userId, bufferId, msgId);
+ }
+
+ foreach (BufferId bufferId, dirtyActivities) {
+ Core::setBufferActivity(userId, bufferId, activity(bufferId));
+ }
+
+ foreach (BufferId bufferId, dirtyHighlights) {
+ Core::setHighlightCount(userId, bufferId, highlightCount(bufferId));
+ }
+
+ dirtyLastSeenBuffers.clear();
+ dirtyMarkerLineBuffers.clear();
+ dirtyActivities.clear();
+ dirtyHighlights.clear();
+}
+
+void CoreBufferSyncer::removeBuffer(BufferId bufferId)
+{
+ BufferInfo bufferInfo = Core::getBufferInfo(_coreSession->user(), bufferId);
+ if (!bufferInfo.isValid()) {
+ qWarning() << "CoreBufferSyncer::removeBuffer(): invalid BufferId:" << bufferId << "for User:" << _coreSession->user();
+ return;
+ }
+
+ if (bufferInfo.type() == BufferInfo::StatusBuffer) {
+ qWarning() << "CoreBufferSyncer::removeBuffer(): Status Buffers cannot be removed!";
+ return;