mirror of https://github.com/procxx/kepka.git
				
				
				
			writing report spam statuses to local storage
This commit is contained in:
		
							parent
							
								
									ce678bad68
								
							
						
					
					
						commit
						0a80ef0006
					
				| 
						 | 
				
			
			@ -1743,6 +1743,7 @@ namespace App {
 | 
			
		|||
		cSetStickerSets(StickerSets());
 | 
			
		||||
		cSetStickerSetsOrder(StickerSetsOrder());
 | 
			
		||||
		cSetLastStickersUpdate(0);
 | 
			
		||||
		cSetReportSpamStatuses(ReportSpamStatuses());
 | 
			
		||||
		::videoItems.clear();
 | 
			
		||||
		::audioItems.clear();
 | 
			
		||||
		::documentItems.clear();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -508,6 +508,7 @@ namespace {
 | 
			
		|||
		lskRecentHashtags     = 0x0a, // no data
 | 
			
		||||
		lskStickers           = 0x0b, // no data
 | 
			
		||||
		lskSavedPeers         = 0x0c, // no data
 | 
			
		||||
		lskReportSpamStatuses = 0x0d, // no data
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	typedef QMap<PeerId, FileKey> DraftsMap;
 | 
			
		||||
| 
						 | 
				
			
			@ -522,7 +523,7 @@ namespace {
 | 
			
		|||
	FileLocationPairs _fileLocationPairs;
 | 
			
		||||
	typedef QMap<MediaKey, MediaKey> FileLocationAliases;
 | 
			
		||||
	FileLocationAliases _fileLocationAliases;
 | 
			
		||||
	FileKey _locationsKey = 0;
 | 
			
		||||
	FileKey _locationsKey = 0, _reportSpamStatusesKey = 0;
 | 
			
		||||
	
 | 
			
		||||
	FileKey _recentStickersKeyOld = 0, _stickersKey = 0;
 | 
			
		||||
	
 | 
			
		||||
| 
						 | 
				
			
			@ -643,6 +644,63 @@ namespace {
 | 
			
		|||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void _writeReportSpamStatuses() {
 | 
			
		||||
		if (!_working()) return;
 | 
			
		||||
 | 
			
		||||
		if (cReportSpamStatuses().isEmpty()) {
 | 
			
		||||
			if (_reportSpamStatusesKey) {
 | 
			
		||||
				clearKey(_reportSpamStatusesKey);
 | 
			
		||||
				_reportSpamStatusesKey = 0;
 | 
			
		||||
				_mapChanged = true;
 | 
			
		||||
				_writeMap();
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			if (!_reportSpamStatusesKey) {
 | 
			
		||||
				_reportSpamStatusesKey = genKey();
 | 
			
		||||
				_mapChanged = true;
 | 
			
		||||
				_writeMap(WriteMapFast);
 | 
			
		||||
			}
 | 
			
		||||
			const ReportSpamStatuses &statuses(cReportSpamStatuses());
 | 
			
		||||
 | 
			
		||||
			quint32 size = sizeof(qint32);
 | 
			
		||||
			for (ReportSpamStatuses::const_iterator i = statuses.cbegin(), e = statuses.cend(); i != e; ++i) {
 | 
			
		||||
				// peer + status
 | 
			
		||||
				size += sizeof(quint64) + sizeof(qint32);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			EncryptedDescriptor data(size);
 | 
			
		||||
			data.stream << qint32(statuses.size());
 | 
			
		||||
			for (ReportSpamStatuses::const_iterator i = statuses.cbegin(), e = statuses.cend(); i != e; ++i) {
 | 
			
		||||
				data.stream << quint64(i.key()) << qint32(i.value());
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			FileWriteDescriptor file(_reportSpamStatusesKey);
 | 
			
		||||
			file.writeEncrypted(data);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void _readReportSpamStatuses() {
 | 
			
		||||
		FileReadDescriptor statuses;
 | 
			
		||||
		if (!readEncryptedFile(statuses, _reportSpamStatusesKey)) {
 | 
			
		||||
			clearKey(_reportSpamStatusesKey);
 | 
			
		||||
			_reportSpamStatusesKey = 0;
 | 
			
		||||
			_writeMap();
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		ReportSpamStatuses &map(cRefReportSpamStatuses());
 | 
			
		||||
		map.clear();
 | 
			
		||||
 | 
			
		||||
		qint32 size = 0;
 | 
			
		||||
		statuses.stream >> size;
 | 
			
		||||
		for (int32 i = 0; i < size; ++i) {
 | 
			
		||||
			quint64 peer = 0;
 | 
			
		||||
			qint32 status = 0;
 | 
			
		||||
			statuses.stream >> peer >> status;
 | 
			
		||||
			map.insert(peer, DBIPeerReportSpamStatus(status));
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	mtpDcOptions *_dcOpts = 0;
 | 
			
		||||
	bool _readSetting(quint32 blockId, QDataStream &stream, int version) {
 | 
			
		||||
		switch (blockId) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1458,7 +1516,7 @@ namespace {
 | 
			
		|||
		DraftsNotReadMap draftsNotReadMap;
 | 
			
		||||
		StorageMap imagesMap, stickerImagesMap, audiosMap;
 | 
			
		||||
		qint64 storageImagesSize = 0, storageStickersSize = 0, storageAudiosSize = 0;
 | 
			
		||||
		quint64 locationsKey = 0, recentStickersKeyOld = 0, stickersKey = 0, backgroundKey = 0, userSettingsKey = 0, recentHashtagsKey = 0, savedPeersKey = 0;
 | 
			
		||||
		quint64 locationsKey = 0, reportSpamStatusesKey = 0, recentStickersKeyOld = 0, stickersKey = 0, backgroundKey = 0, userSettingsKey = 0, recentHashtagsKey = 0, savedPeersKey = 0;
 | 
			
		||||
		while (!map.stream.atEnd()) {
 | 
			
		||||
			quint32 keyType;
 | 
			
		||||
			map.stream >> keyType;
 | 
			
		||||
| 
						 | 
				
			
			@ -1523,6 +1581,9 @@ namespace {
 | 
			
		|||
			case lskLocations: {
 | 
			
		||||
				map.stream >> locationsKey;
 | 
			
		||||
			} break;
 | 
			
		||||
			case lskReportSpamStatuses: {
 | 
			
		||||
				map.stream >> reportSpamStatusesKey;
 | 
			
		||||
			} break;
 | 
			
		||||
			case lskRecentStickersOld: {
 | 
			
		||||
				map.stream >> recentStickersKeyOld;
 | 
			
		||||
			} break;
 | 
			
		||||
| 
						 | 
				
			
			@ -1562,6 +1623,7 @@ namespace {
 | 
			
		|||
		_storageAudiosSize = storageAudiosSize;
 | 
			
		||||
 | 
			
		||||
		_locationsKey = locationsKey;
 | 
			
		||||
		_reportSpamStatusesKey = reportSpamStatusesKey;
 | 
			
		||||
		_recentStickersKeyOld = recentStickersKeyOld;
 | 
			
		||||
		_stickersKey = stickersKey;
 | 
			
		||||
		_savedPeersKey = savedPeersKey;
 | 
			
		||||
| 
						 | 
				
			
			@ -1579,6 +1641,9 @@ namespace {
 | 
			
		|||
		if (_locationsKey) {
 | 
			
		||||
			_readLocations();
 | 
			
		||||
		}
 | 
			
		||||
		if (_reportSpamStatusesKey) {
 | 
			
		||||
			_readReportSpamStatuses();
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		_readUserSettings();
 | 
			
		||||
		_readMtpData();
 | 
			
		||||
| 
						 | 
				
			
			@ -1630,6 +1695,7 @@ namespace {
 | 
			
		|||
		if (!_stickerImagesMap.isEmpty()) mapSize += sizeof(quint32) * 2 + _stickerImagesMap.size() * (sizeof(quint64) * 3 + sizeof(qint32));
 | 
			
		||||
		if (!_audiosMap.isEmpty()) mapSize += sizeof(quint32) * 2 + _audiosMap.size() * (sizeof(quint64) * 3 + sizeof(qint32));
 | 
			
		||||
		if (_locationsKey) mapSize += sizeof(quint32) + sizeof(quint64);
 | 
			
		||||
		if (_reportSpamStatusesKey) mapSize += sizeof(quint32) + sizeof(quint64);
 | 
			
		||||
		if (_recentStickersKeyOld) mapSize += sizeof(quint32) + sizeof(quint64);
 | 
			
		||||
		if (_stickersKey) mapSize += sizeof(quint32) + sizeof(quint64);
 | 
			
		||||
		if (_savedPeersKey) mapSize += sizeof(quint32) + sizeof(quint64);
 | 
			
		||||
| 
						 | 
				
			
			@ -1670,6 +1736,9 @@ namespace {
 | 
			
		|||
		if (_locationsKey) {
 | 
			
		||||
			mapData.stream << quint32(lskLocations) << quint64(_locationsKey);
 | 
			
		||||
		}
 | 
			
		||||
		if (_reportSpamStatusesKey) {
 | 
			
		||||
			mapData.stream << quint32(lskReportSpamStatuses) << quint64(_reportSpamStatusesKey);
 | 
			
		||||
		}
 | 
			
		||||
		if (_recentStickersKeyOld) {
 | 
			
		||||
			mapData.stream << quint32(lskRecentStickersOld) << quint64(_recentStickersKeyOld);
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -1938,7 +2007,7 @@ namespace Local {
 | 
			
		|||
		_draftsNotReadMap.clear();
 | 
			
		||||
		_stickerImagesMap.clear();
 | 
			
		||||
		_audiosMap.clear();
 | 
			
		||||
		_locationsKey = _recentStickersKeyOld = _stickersKey = _backgroundKey = _userSettingsKey = _recentHashtagsKey = _savedPeersKey = 0;
 | 
			
		||||
		_locationsKey = _reportSpamStatusesKey = _recentStickersKeyOld = _stickersKey = _backgroundKey = _userSettingsKey = _recentHashtagsKey = _savedPeersKey = 0;
 | 
			
		||||
		_mapChanged = true;
 | 
			
		||||
		_writeMap(WriteMapNow);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -2945,7 +3014,7 @@ namespace Local {
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	void writeReportSpamStatuses() {
 | 
			
		||||
 | 
			
		||||
		_writeReportSpamStatuses();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	struct ClearManagerData {
 | 
			
		||||
| 
						 | 
				
			
			@ -2995,6 +3064,10 @@ namespace Local {
 | 
			
		|||
				_locationsKey = 0;
 | 
			
		||||
				_mapChanged = true;
 | 
			
		||||
			}
 | 
			
		||||
			if (_reportSpamStatusesKey) {
 | 
			
		||||
				_reportSpamStatusesKey = 0;
 | 
			
		||||
				_mapChanged = true;
 | 
			
		||||
			}
 | 
			
		||||
			if (_recentStickersKeyOld) {
 | 
			
		||||
				_recentStickersKeyOld = 0;
 | 
			
		||||
				_mapChanged = true;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue