mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
76 lines
4.3 KiB
Swift
76 lines
4.3 KiB
Swift
#if DEBUG
|
|
|
|
import Foundation
|
|
import TelegramCore
|
|
import Postbox
|
|
import SwiftSignalKit
|
|
import Display
|
|
import TelegramUI
|
|
|
|
private enum SnapshotMessage {
|
|
case text(String, Bool)
|
|
case timer(Int32, Bool)
|
|
|
|
func storeMessage(_ postbox: Postbox, peerId: PeerId, userPeerId: PeerId, accountPeerId: PeerId, _ date: Int32) -> StoreMessage {
|
|
switch self {
|
|
case let .text(text, outgoing):
|
|
var flags: StoreMessageFlags = []
|
|
if !outgoing {
|
|
flags.insert(.Incoming)
|
|
}
|
|
return StoreMessage(id: MessageId(peerId: peerId, namespace: Namespaces.Message.Cloud, id: date), globallyUniqueId: nil, groupingKey: nil, timestamp: date, flags: flags, tags: [], globalTags: [], localTags: [], forwardInfo: nil, authorId: outgoing ? accountPeerId : userPeerId, text: text, attributes: [], media: [])
|
|
case let .timer(timeout, outgoing):
|
|
var flags: StoreMessageFlags = []
|
|
if !outgoing {
|
|
flags.insert(.Incoming)
|
|
}
|
|
return StoreMessage(id: MessageId(peerId: peerId, namespace: Namespaces.Message.Cloud, id: date), globallyUniqueId: nil, groupingKey: nil, timestamp: date, flags: flags, tags: [], globalTags: [], localTags: [], forwardInfo: nil, authorId: outgoing ? accountPeerId : userPeerId, text: "", attributes: [], media: [TelegramMediaAction(action: .messageAutoremoveTimeoutUpdated(timeout))])
|
|
}
|
|
}
|
|
}
|
|
|
|
private let messages: [SnapshotMessage] = [
|
|
.text("Hey Eileen", true),
|
|
.text("So, why is Telegram cool?", true),
|
|
.text("Well, look. Telegram is superfast and you can use it on all your devices at the same time — phones, tablets, even desktops.", false),
|
|
.text("😴", true),
|
|
.text("And it has secret chats, like this one, with end-to-end encryption!", false),
|
|
.text("End encryption to what end??", true),
|
|
.text("Arrgh. Forget it. You can set a timer and send photos that will disappear when the time runs out. Yay!", false),
|
|
.timer(15, false)
|
|
]
|
|
|
|
func snapshotSecretChat(application: UIApplication, mainWindow: UIWindow, window: Window1, statusBarHost: StatusBarHost) {
|
|
let (account, _) = snapshotEnvironment(application: application, mainWindow: mainWindow, statusBarHost: statusBarHost, theme: .night)
|
|
account.network.mockConnectionStatus = .online(proxyAddress: nil)
|
|
|
|
let accountPeer = TelegramUser(id: account.peerId, accessHash: nil, firstName: "Alena", lastName: "Shy", username: "alenashy", phone: "44321456789", photo: [], botInfo: nil, restrictionInfo: nil, flags: [])
|
|
let userPeer = TelegramUser(id: PeerId(namespace: Namespaces.Peer.CloudUser, id: 456), accessHash: nil, firstName: "Eileen", lastName: "Lockhard", username: nil, phone: "44321456789", photo: snapshotAvatar(account.postbox, 6), botInfo: nil, restrictionInfo: nil, flags: [])
|
|
let secretPeer = TelegramSecretChat(id: PeerId(namespace: Namespaces.Peer.SecretChat, id: 456), creationDate: 123, regularPeerId: userPeer.id, accessHash: 123, role: .creator, embeddedState: .active, messageAutoremoveTimeout: nil)
|
|
|
|
let _ = (account.postbox.transaction { transaction -> Void in
|
|
if let hole = account.postbox.seedConfiguration.initializeChatListWithHole.topLevel {
|
|
transaction.replaceChatListHole(groupId: nil, index: hole.index, hole: nil)
|
|
}
|
|
|
|
transaction.updatePeersInternal([accountPeer, userPeer, secretPeer], update: { _, updated in
|
|
return updated
|
|
})
|
|
|
|
transaction.updatePeerPresencesInternal(presences: [userPeer.id: TelegramUserPresence(status: .present(until: Int32.max - 1), lastActivity: 0)], merge: { _, updated in return updated })
|
|
|
|
var date: Int32 = Int32(Date().timeIntervalSince1970) - 1000
|
|
for message in messages {
|
|
let _ = transaction.addMessages([message.storeMessage(account.postbox, peerId: secretPeer.id, userPeerId: userPeer.id, accountPeerId: account.peerId, date)], location: .UpperHistoryBlock)
|
|
date += 10
|
|
}
|
|
}).start()
|
|
|
|
let rootController = TelegramRootController(account: account)
|
|
rootController.addRootControllers(showCallsTab: true)
|
|
window.viewController = rootController
|
|
navigateToChatController(navigationController: rootController, account: account, chatLocation: .peer(secretPeer.id), animated: false)
|
|
}
|
|
|
|
#endif
|