void timedReadUser(void) { /* for now we just do this */ readUser(); /* This indicates that the user entered this line */ IS->is_argShort = 0xffff; }
MessagesDialogs TelegramCache::readDialogs() const { MessagesDialogs result(MessagesDialogs::typeMessagesDialogs); const QString filePath = p->path + "/dialogs"; const QList<QVariant> &list = readList(filePath); QList<Dialog> dialogs; QHash<QByteArray, Chat> chats; QHash<QByteArray, User> users; QHash<QByteArray, Message> messages; Q_FOREACH(const QVariant &var, list) { const Dialog &dialog = Dialog::fromMap( var.toMap() ); const Peer &peer = dialog.peer(); const QByteArray &key = TelegramTools::identifier(peer); switch(static_cast<int>(peer.classType())) { case Peer::typePeerChannel: case Peer::typePeerChat: if(!chats.contains(key)) chats[key] = readChat(peer); break; case Peer::typePeerUser: if(!users.contains(key)) users[key] = readUser(peer); break; } if(dialog.topMessage()) { QByteArray topMsgKey = TelegramTools::identifier(dialog.peer(), dialog.topMessage()); const QString &messageFolder = getMessageFolder(peer); const QString messageFile = messageFolder + "/" + QString::number(dialog.topMessage()); messages[topMsgKey] = Message::fromMap( readMap(messageFile) ); } dialogs << dialog; } result.setDialogs(dialogs); result.setChats(chats.values()); result.setUsers(users.values()); result.setMessages(messages.values()); result.setCount(dialogs.count()); return result; }
Twitter::List TwitterMicroBlog::readListFromJsonMap(Choqok::Account *theAccount, QVariantMap map) { Twitter::List l; l.author = readUser(theAccount, map[QLatin1String("user")].toMap()); l.description = map[QLatin1String("description")].toString(); l.fullname = map[QLatin1String("full_name")].toString(); l.isFollowing = map[QLatin1String("following")].toBool(); l.listId = map[QLatin1String("id")].toString(); l.memberCount = map[QLatin1String("member_count")].toInt(); l.mode = (map[QLatin1String("mode")].toString() == QLatin1String("public") ? Twitter::Public : Twitter::Private); l.name = map[QLatin1String("name")].toString(); l.slug = map[QLatin1String("slug")].toString(); l.subscriberCount = map[QLatin1String("subscriber_count")].toInt(); l.uri = map[QLatin1String("uri")].toString(); return l; }
User TelegramCache::readUser(const InputPeer &peer) const { return readUser(TelegramTools::inputPeerPeer(peer)); }
MessagesMessages TelegramCache::readMessages(const Peer &peer, int offset, int limit) const { MessagesMessages result(MessagesMessages::typeMessagesMessages); const QString folderPath = getMessageFolder(peer); QStringList files = QDir(folderPath).entryList(QDir::Files); qStableSort(files.begin(), files.end(), fileListDeSort); files = files.mid(offset, limit); QHash<QByteArray, Chat> chats; QHash<QByteArray, User> users; QList<Message> messages; Q_FOREACH(const QString &f, files) { const QString path = folderPath + "/" + f; const QMap<QString, QVariant> &map = readMap(path); if(map.isEmpty()) continue; const Message &msg = Message::fromMap(map); const Peer &toPeer = msg.toId(); const QByteArray &toKey = TelegramTools::identifier(toPeer); switch(static_cast<int>(toPeer.classType())) { case Peer::typePeerChannel: case Peer::typePeerChat: if(!chats.contains(toKey)) chats[toKey] = readChat(toPeer); break; case Peer::typePeerUser: if(!users.contains(toKey)) users[toKey] = readUser(toPeer); break; } if(msg.fromId()) { Peer fromPeer(Peer::typePeerUser); fromPeer.setUserId(msg.fromId()); const QByteArray &fromKey = TelegramTools::identifier(fromPeer); switch(static_cast<int>(fromPeer.classType())) { case Peer::typePeerChannel: case Peer::typePeerChat: if(!chats.contains(fromKey)) chats[fromKey] = readChat(fromPeer); break; case Peer::typePeerUser: if(!users.contains(fromKey)) users[fromKey] = readUser(fromPeer); break; } } messages << msg; } result.setMessages(messages); result.setChats(chats.values()); result.setUsers(users.values()); result.setCount(messages.count()); return result; }