mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-09-06 20:54:04 +00:00
no message
This commit is contained in:
parent
c55d7615a3
commit
97fc5d83e1
@ -11,8 +11,8 @@ private final class ChannelMembersControllerArguments {
|
|||||||
let setPeerIdWithRevealedOptions: (PeerId?, PeerId?) -> Void
|
let setPeerIdWithRevealedOptions: (PeerId?, PeerId?) -> Void
|
||||||
let removePeer: (PeerId) -> Void
|
let removePeer: (PeerId) -> Void
|
||||||
let openPeer: (Peer) -> Void
|
let openPeer: (Peer) -> Void
|
||||||
let inviteViaLink:()->Void
|
let inviteViaLink: ()->Void
|
||||||
init(account: Account, addMember: @escaping () -> Void, setPeerIdWithRevealedOptions: @escaping (PeerId?, PeerId?) -> Void, removePeer: @escaping (PeerId) -> Void, openPeer: @escaping (Peer) -> Void, inviteViaLink:@escaping()->Void) {
|
init(account: Account, addMember: @escaping () -> Void, setPeerIdWithRevealedOptions: @escaping (PeerId?, PeerId?) -> Void, removePeer: @escaping (PeerId) -> Void, openPeer: @escaping (Peer) -> Void, inviteViaLink: @escaping()->Void) {
|
||||||
self.account = account
|
self.account = account
|
||||||
self.addMember = addMember
|
self.addMember = addMember
|
||||||
self.setPeerIdWithRevealedOptions = setPeerIdWithRevealedOptions
|
self.setPeerIdWithRevealedOptions = setPeerIdWithRevealedOptions
|
||||||
@ -243,7 +243,6 @@ private func ChannelMembersControllerEntries(account: Account, presentationData:
|
|||||||
var entries: [ChannelMembersEntry] = []
|
var entries: [ChannelMembersEntry] = []
|
||||||
|
|
||||||
if let participants = participants {
|
if let participants = participants {
|
||||||
|
|
||||||
var canAddMember: Bool = false
|
var canAddMember: Bool = false
|
||||||
if let peer = view.peers[view.peerId] as? TelegramChannel {
|
if let peer = view.peers[view.peerId] as? TelegramChannel {
|
||||||
canAddMember = peer.hasAdminRights(.canInviteUsers)
|
canAddMember = peer.hasAdminRights(.canInviteUsers)
|
||||||
@ -251,7 +250,9 @@ private func ChannelMembersControllerEntries(account: Account, presentationData:
|
|||||||
|
|
||||||
if canAddMember {
|
if canAddMember {
|
||||||
entries.append(.addMember(presentationData.theme, presentationData.strings.Channel_Members_AddMembers))
|
entries.append(.addMember(presentationData.theme, presentationData.strings.Channel_Members_AddMembers))
|
||||||
entries.append(.inviteLink(presentationData.theme, presentationData.strings.Channel_Members_InviteLink))
|
if let peer = view.peers[view.peerId] as? TelegramChannel, peer.addressName == nil {
|
||||||
|
entries.append(.inviteLink(presentationData.theme, presentationData.strings.Channel_Members_InviteLink))
|
||||||
|
}
|
||||||
entries.append(.addMemberInfo(presentationData.theme, presentationData.strings.Channel_Members_AddMembersHelp))
|
entries.append(.addMemberInfo(presentationData.theme, presentationData.strings.Channel_Members_AddMembersHelp))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -572,7 +572,7 @@ class ChatListItemNode: ItemListRevealOptionsItemNode {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if let message = message, message.author?.id == account.peerId && !hasDraft {
|
if let message = message, message.author?.id == account.peerId && !hasDraft {
|
||||||
if message.flags.isSending {
|
if message.flags.isSending && !message.isSentOrAcknowledged {
|
||||||
statusImage = PresentationResourcesChatList.pendingImage(item.presentationData.theme)
|
statusImage = PresentationResourcesChatList.pendingImage(item.presentationData.theme)
|
||||||
} else {
|
} else {
|
||||||
if let combinedReadState = combinedReadState, combinedReadState.isOutgoingMessageIndexRead(MessageIndex(message)) {
|
if let combinedReadState = combinedReadState, combinedReadState.isOutgoingMessageIndexRead(MessageIndex(message)) {
|
||||||
|
@ -400,7 +400,7 @@ final class ChatMessageAttachedContentNode: ASDisplayNode {
|
|||||||
} else {
|
} else {
|
||||||
if message.flags.contains(.Failed) {
|
if message.flags.contains(.Failed) {
|
||||||
statusType = .BubbleOutgoing(.Failed)
|
statusType = .BubbleOutgoing(.Failed)
|
||||||
} else if message.flags.isSending {
|
} else if message.flags.isSending && !message.isSentOrAcknowledged {
|
||||||
statusType = .BubbleOutgoing(.Sending)
|
statusType = .BubbleOutgoing(.Sending)
|
||||||
} else {
|
} else {
|
||||||
statusType = .BubbleOutgoing(.Sent(read: messageRead))
|
statusType = .BubbleOutgoing(.Sent(read: messageRead))
|
||||||
@ -482,7 +482,7 @@ final class ChatMessageAttachedContentNode: ASDisplayNode {
|
|||||||
} else {
|
} else {
|
||||||
statusType = .BubbleOutgoing(.Failed)
|
statusType = .BubbleOutgoing(.Failed)
|
||||||
}
|
}
|
||||||
} else if message.flags.isSending {
|
} else if message.flags.isSending && !message.isSentOrAcknowledged {
|
||||||
if imageMode {
|
if imageMode {
|
||||||
statusType = .ImageOutgoing(.Sending)
|
statusType = .ImageOutgoing(.Sending)
|
||||||
} else {
|
} else {
|
||||||
|
@ -697,7 +697,7 @@ class ChatMessageBubbleItemNode: ChatMessageItemView {
|
|||||||
} else {
|
} else {
|
||||||
if message.flags.contains(.Failed) {
|
if message.flags.contains(.Failed) {
|
||||||
statusType = .ImageOutgoing(.Failed)
|
statusType = .ImageOutgoing(.Failed)
|
||||||
} else if message.flags.isSending {
|
} else if message.flags.isSending && !message.isSentOrAcknowledged {
|
||||||
statusType = .ImageOutgoing(.Sending)
|
statusType = .ImageOutgoing(.Sending)
|
||||||
} else {
|
} else {
|
||||||
statusType = .ImageOutgoing(.Sent(read: item.read))
|
statusType = .ImageOutgoing(.Sent(read: item.read))
|
||||||
|
@ -161,7 +161,7 @@ class ChatMessageContactBubbleContentNode: ChatMessageBubbleContentNode {
|
|||||||
} else {
|
} else {
|
||||||
if item.message.flags.contains(.Failed) {
|
if item.message.flags.contains(.Failed) {
|
||||||
statusType = .BubbleOutgoing(.Failed)
|
statusType = .BubbleOutgoing(.Failed)
|
||||||
} else if item.message.flags.isSending {
|
} else if item.message.flags.isSending && !item.message.isSentOrAcknowledged {
|
||||||
statusType = .BubbleOutgoing(.Sending)
|
statusType = .BubbleOutgoing(.Sending)
|
||||||
} else {
|
} else {
|
||||||
statusType = .BubbleOutgoing(.Sent(read: item.read))
|
statusType = .BubbleOutgoing(.Sent(read: item.read))
|
||||||
|
@ -48,7 +48,7 @@ class ChatMessageFileBubbleContentNode: ChatMessageBubbleContentNode {
|
|||||||
} else {
|
} else {
|
||||||
if item.message.flags.contains(.Failed) {
|
if item.message.flags.contains(.Failed) {
|
||||||
statusType = .BubbleOutgoing(.Failed)
|
statusType = .BubbleOutgoing(.Failed)
|
||||||
} else if item.message.flags.isSending {
|
} else if item.message.flags.isSending && !item.message.isSentOrAcknowledged {
|
||||||
statusType = .BubbleOutgoing(.Sending)
|
statusType = .BubbleOutgoing(.Sending)
|
||||||
} else {
|
} else {
|
||||||
statusType = .BubbleOutgoing(.Sent(read: item.read))
|
statusType = .BubbleOutgoing(.Sent(read: item.read))
|
||||||
|
@ -208,7 +208,7 @@ class ChatMessageInteractiveInstantVideoNode: ASDisplayNode {
|
|||||||
case .free:
|
case .free:
|
||||||
if item.message.flags.contains(.Failed) {
|
if item.message.flags.contains(.Failed) {
|
||||||
statusType = .FreeOutgoing(.Failed)
|
statusType = .FreeOutgoing(.Failed)
|
||||||
} else if item.message.flags.isSending {
|
} else if item.message.flags.isSending && !item.message.isSentOrAcknowledged {
|
||||||
statusType = .FreeOutgoing(.Sending)
|
statusType = .FreeOutgoing(.Sending)
|
||||||
} else {
|
} else {
|
||||||
statusType = .FreeOutgoing(.Sent(read: item.read))
|
statusType = .FreeOutgoing(.Sent(read: item.read))
|
||||||
@ -216,7 +216,7 @@ class ChatMessageInteractiveInstantVideoNode: ASDisplayNode {
|
|||||||
case .bubble:
|
case .bubble:
|
||||||
if item.message.flags.contains(.Failed) {
|
if item.message.flags.contains(.Failed) {
|
||||||
statusType = .BubbleOutgoing(.Failed)
|
statusType = .BubbleOutgoing(.Failed)
|
||||||
} else if item.message.flags.isSending {
|
} else if item.message.flags.isSending && !item.message.isSentOrAcknowledged {
|
||||||
statusType = .BubbleOutgoing(.Sending)
|
statusType = .BubbleOutgoing(.Sending)
|
||||||
} else {
|
} else {
|
||||||
statusType = .BubbleOutgoing(.Sent(read: item.read))
|
statusType = .BubbleOutgoing(.Sent(read: item.read))
|
||||||
|
@ -435,7 +435,7 @@ public final class ChatMessageItem: ListViewItem, CustomStringConvertible {
|
|||||||
apply(animation)
|
apply(animation)
|
||||||
if let nodeValue = node() as? ChatMessageItemView {
|
if let nodeValue = node() as? ChatMessageItemView {
|
||||||
nodeValue.updateSelectionState(animated: false)
|
nodeValue.updateSelectionState(animated: false)
|
||||||
nodeValue.updateHighlightedState(animated: false)
|
nodeValue.updateHighlightedState(animated: false)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -199,7 +199,7 @@ class ChatMessageMapBubbleContentNode: ChatMessageBubbleContentNode {
|
|||||||
} else {
|
} else {
|
||||||
if item.message.flags.contains(.Failed) {
|
if item.message.flags.contains(.Failed) {
|
||||||
statusType = .BubbleOutgoing(.Failed)
|
statusType = .BubbleOutgoing(.Failed)
|
||||||
} else if item.message.flags.isSending {
|
} else if item.message.flags.isSending && !item.message.isSentOrAcknowledged {
|
||||||
statusType = .BubbleOutgoing(.Sending)
|
statusType = .BubbleOutgoing(.Sending)
|
||||||
} else {
|
} else {
|
||||||
statusType = .BubbleOutgoing(.Sent(read: item.read))
|
statusType = .BubbleOutgoing(.Sent(read: item.read))
|
||||||
@ -211,7 +211,7 @@ class ChatMessageMapBubbleContentNode: ChatMessageBubbleContentNode {
|
|||||||
} else {
|
} else {
|
||||||
if item.message.flags.contains(.Failed) {
|
if item.message.flags.contains(.Failed) {
|
||||||
statusType = .ImageOutgoing(.Failed)
|
statusType = .ImageOutgoing(.Failed)
|
||||||
} else if item.message.flags.isSending {
|
} else if item.message.flags.isSending && !item.message.isSentOrAcknowledged {
|
||||||
statusType = .ImageOutgoing(.Sending)
|
statusType = .ImageOutgoing(.Sending)
|
||||||
} else {
|
} else {
|
||||||
statusType = .ImageOutgoing(.Sent(read: item.read))
|
statusType = .ImageOutgoing(.Sent(read: item.read))
|
||||||
|
@ -129,7 +129,7 @@ class ChatMessageMediaBubbleContentNode: ChatMessageBubbleContentNode {
|
|||||||
} else {
|
} else {
|
||||||
if item.message.flags.contains(.Failed) {
|
if item.message.flags.contains(.Failed) {
|
||||||
statusType = .ImageOutgoing(.Failed)
|
statusType = .ImageOutgoing(.Failed)
|
||||||
} else if item.message.flags.isSending {
|
} else if item.message.flags.isSending && !item.message.isSentOrAcknowledged {
|
||||||
statusType = .ImageOutgoing(.Sending)
|
statusType = .ImageOutgoing(.Sending)
|
||||||
} else {
|
} else {
|
||||||
statusType = .ImageOutgoing(.Sent(read: item.read))
|
statusType = .ImageOutgoing(.Sent(read: item.read))
|
||||||
|
@ -201,7 +201,7 @@ class ChatMessageStickerItemNode: ChatMessageItemView {
|
|||||||
} else {
|
} else {
|
||||||
if item.message.flags.contains(.Failed) {
|
if item.message.flags.contains(.Failed) {
|
||||||
statusType = .FreeOutgoing(.Failed)
|
statusType = .FreeOutgoing(.Failed)
|
||||||
} else if item.message.flags.isSending {
|
} else if item.message.flags.isSending && !item.message.isSentOrAcknowledged {
|
||||||
statusType = .FreeOutgoing(.Sending)
|
statusType = .FreeOutgoing(.Sending)
|
||||||
} else {
|
} else {
|
||||||
statusType = .FreeOutgoing(.Sent(read: item.read))
|
statusType = .FreeOutgoing(.Sent(read: item.read))
|
||||||
|
@ -97,7 +97,7 @@ class ChatMessageTextBubbleContentNode: ChatMessageBubbleContentNode {
|
|||||||
} else {
|
} else {
|
||||||
if message.flags.contains(.Failed) {
|
if message.flags.contains(.Failed) {
|
||||||
statusType = .BubbleOutgoing(.Failed)
|
statusType = .BubbleOutgoing(.Failed)
|
||||||
} else if message.flags.isSending {
|
} else if message.flags.isSending && !message.isSentOrAcknowledged {
|
||||||
statusType = .BubbleOutgoing(.Sending)
|
statusType = .BubbleOutgoing(.Sending)
|
||||||
} else {
|
} else {
|
||||||
statusType = .BubbleOutgoing(.Sent(read: item.read))
|
statusType = .BubbleOutgoing(.Sent(read: item.read))
|
||||||
|
@ -745,8 +745,13 @@ private func groupInfoEntries(account: Account, presentationData: PresentationDa
|
|||||||
}
|
}
|
||||||
|
|
||||||
if let editingState = state.editingState {
|
if let editingState = state.editingState {
|
||||||
if let group = view.peers[view.peerId] as? TelegramGroup, case .creator = group.role {
|
if let group = view.peers[view.peerId] as? TelegramGroup {
|
||||||
entries.append(.adminManagement(presentationData.theme, presentationData.strings.GroupInfo_ChatAdmins))
|
if case .creator = group.role {
|
||||||
|
entries.append(.adminManagement(presentationData.theme, presentationData.strings.GroupInfo_ChatAdmins))
|
||||||
|
}
|
||||||
|
|
||||||
|
entries.append(GroupInfoEntry.notifications(presentationData.theme, presentationData.strings.GroupInfo_Notifications, notificationsText))
|
||||||
|
entries.append(GroupInfoEntry.notificationSound(presentationData.theme, presentationData.strings.GroupInfo_Sound, localizedPeerNotificationSoundString(strings: presentationData.strings, sound: peerNotificationSettings.messageSound, default: globalNotificationSettings.effective.groupChats.sound)))
|
||||||
} else if let cachedChannelData = view.cachedData as? CachedChannelData {
|
} else if let cachedChannelData = view.cachedData as? CachedChannelData {
|
||||||
if isCreator {
|
if isCreator {
|
||||||
entries.append(GroupInfoEntry.groupTypeSetup(presentationData.theme, presentationData.strings.GroupInfo_GroupType, isPublic ? presentationData.strings.Channel_Setup_TypePublic : presentationData.strings.Channel_Setup_TypePrivate))
|
entries.append(GroupInfoEntry.groupTypeSetup(presentationData.theme, presentationData.strings.GroupInfo_GroupType, isPublic ? presentationData.strings.Channel_Setup_TypePublic : presentationData.strings.Channel_Setup_TypePrivate))
|
||||||
|
@ -24,6 +24,26 @@ func presentedLegacyCamera(account: Account, peer: Peer, cameraView: TGAttachmen
|
|||||||
controller = TGCameraController()
|
controller = TGCameraController()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if #available(iOSApplicationExtension 10.0, *) {
|
||||||
|
} else {
|
||||||
|
controller.customPresentOverlayController = { [weak legacyController] overlayController in
|
||||||
|
guard let legacyController = legacyController, let overlayController = overlayController else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
let presentationData = account.telegramApplicationContext.currentPresentationData.with { $0 }
|
||||||
|
let overlayLegacyController = LegacyController(presentation: .custom, theme: presentationData.theme)
|
||||||
|
overlayLegacyController.supportedOrientations = ViewControllerSupportedOrientations(regularSize: .portrait, compactSize: .portrait)
|
||||||
|
overlayLegacyController.statusBar.statusBarStyle = .Hide
|
||||||
|
overlayLegacyController.bind(controller: overlayController)
|
||||||
|
overlayController.customDismissSelf = { [weak overlayLegacyController] in
|
||||||
|
overlayLegacyController?.dismiss()
|
||||||
|
}
|
||||||
|
|
||||||
|
legacyController.present(overlayLegacyController, in: .window(.root))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
controller.isImportant = true
|
controller.isImportant = true
|
||||||
controller.shouldStoreCapturedAssets = saveCapturedPhotos && !isSecretChat
|
controller.shouldStoreCapturedAssets = saveCapturedPhotos && !isSecretChat
|
||||||
controller.allowCaptions = true
|
controller.allowCaptions = true
|
||||||
|
@ -615,6 +615,7 @@ public final class ManagedAudioSession {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private func setupOutputMode(_ outputMode: AudioSessionOutputMode, type: ManagedAudioSessionType) throws {
|
private func setupOutputMode(_ outputMode: AudioSessionOutputMode, type: ManagedAudioSessionType) throws {
|
||||||
|
print("ManagedAudioSession setup \(outputMode) for \(type)")
|
||||||
var resetToBuiltin = false
|
var resetToBuiltin = false
|
||||||
switch outputMode {
|
switch outputMode {
|
||||||
case .system:
|
case .system:
|
||||||
@ -625,6 +626,16 @@ public final class ManagedAudioSession {
|
|||||||
resetToBuiltin = true
|
resetToBuiltin = true
|
||||||
case .speaker:
|
case .speaker:
|
||||||
try AVAudioSession.sharedInstance().overrideOutputAudioPort(.speaker)
|
try AVAudioSession.sharedInstance().overrideOutputAudioPort(.speaker)
|
||||||
|
if type == .voiceCall {
|
||||||
|
if let routes = AVAudioSession.sharedInstance().availableInputs {
|
||||||
|
for route in routes {
|
||||||
|
if route.portType == AVAudioSessionPortBuiltInMic {
|
||||||
|
let _ = try? AVAudioSession.sharedInstance().setPreferredInput(route)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
case .headphones:
|
case .headphones:
|
||||||
break
|
break
|
||||||
case let .port(port):
|
case let .port(port):
|
||||||
|
@ -161,6 +161,9 @@ final class NetworkStatusTitleView: UIView, NavigationBarTitleView, NavigationBa
|
|||||||
alignedTitleWidth -= 20.0
|
alignedTitleWidth -= 20.0
|
||||||
proxyPadding += 39.0
|
proxyPadding += 39.0
|
||||||
}
|
}
|
||||||
|
if !self.lockView.isHidden {
|
||||||
|
maxTitleWidth -= 10.0
|
||||||
|
}
|
||||||
|
|
||||||
let titleSize = self.titleNode.updateLayout(CGSize(width: max(1.0, maxTitleWidth), height: size.height))
|
let titleSize = self.titleNode.updateLayout(CGSize(width: max(1.0, maxTitleWidth), height: size.height))
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ func stringForUserPresence(strings: PresentationStrings, day: RelativeTimestampF
|
|||||||
case .today:
|
case .today:
|
||||||
dayString = strings.LastSeen_AtDate(strings.Time_TodayAt(stringForShortTimestamp(hours: hours, minutes: minutes, timeFormat: timeFormat)).0).0
|
dayString = strings.LastSeen_AtDate(strings.Time_TodayAt(stringForShortTimestamp(hours: hours, minutes: minutes, timeFormat: timeFormat)).0).0
|
||||||
case .yesterday:
|
case .yesterday:
|
||||||
dayString = strings.LastSeen_AtDate(strings.Time_YesterdayAt(stringForShortTimestamp(hours: hours, minutes: minutes, timeFormat: timeFormat)).0).0
|
dayString = strings.LastSeen_YesterdayAt(stringForShortTimestamp(hours: hours, minutes: minutes, timeFormat: timeFormat)).0
|
||||||
}
|
}
|
||||||
return dayString
|
return dayString
|
||||||
}
|
}
|
||||||
@ -269,7 +269,8 @@ func stringAndActivityForUserPresence(strings: PresentationStrings, timeFormat:
|
|||||||
if dayDifference == 0 || dayDifference == -1 {
|
if dayDifference == 0 || dayDifference == -1 {
|
||||||
let day: RelativeTimestampFormatDay
|
let day: RelativeTimestampFormatDay
|
||||||
if dayDifference == 0 {
|
if dayDifference == 0 {
|
||||||
day = .today
|
let minutes = difference / (60 * 60)
|
||||||
|
return (strings.LastSeen_HoursAgo(minutes), false)
|
||||||
} else {
|
} else {
|
||||||
day = .yesterday
|
day = .yesterday
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,6 @@ private final class PresentationCallToneRenderer {
|
|||||||
self.queue = queue
|
self.queue = queue
|
||||||
|
|
||||||
self.tone = tone
|
self.tone = tone
|
||||||
let data = presentationCallToneData(tone)
|
|
||||||
|
|
||||||
var controlImpl: ((MediaPlayerAudioSessionCustomControl) -> Disposable)?
|
var controlImpl: ((MediaPlayerAudioSessionCustomControl) -> Disposable)?
|
||||||
|
|
||||||
@ -52,18 +51,28 @@ private final class PresentationCallToneRenderer {
|
|||||||
|
|
||||||
let toneDataOffset = Atomic<Int>(value: 0)
|
let toneDataOffset = Atomic<Int>(value: 0)
|
||||||
|
|
||||||
let toneDataMaxOffset: Int?
|
let toneData = Atomic<Data?>(value: nil)
|
||||||
if let loopCount = tone.loopCount {
|
|
||||||
toneDataMaxOffset = (data?.count ?? 0) * loopCount
|
|
||||||
} else {
|
|
||||||
toneDataMaxOffset = nil
|
|
||||||
}
|
|
||||||
|
|
||||||
self.toneRenderer.beginRequestingFrames(queue: DispatchQueue.global(), takeFrame: {
|
self.toneRenderer.beginRequestingFrames(queue: DispatchQueue.global(), takeFrame: {
|
||||||
|
var data = toneData.with { $0 }
|
||||||
|
if data == nil {
|
||||||
|
data = presentationCallToneData(tone)
|
||||||
|
if data != nil {
|
||||||
|
let _ = toneData.swap(data)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
guard let toneData = data else {
|
guard let toneData = data else {
|
||||||
return .finished
|
return .finished
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let toneDataMaxOffset: Int?
|
||||||
|
if let loopCount = tone.loopCount {
|
||||||
|
toneDataMaxOffset = (data?.count ?? 0) * loopCount
|
||||||
|
} else {
|
||||||
|
toneDataMaxOffset = nil
|
||||||
|
}
|
||||||
|
|
||||||
let frameSize = 44100
|
let frameSize = 44100
|
||||||
|
|
||||||
var takeOffset: Int?
|
var takeOffset: Int?
|
||||||
|
@ -2186,6 +2186,9 @@ final class SecureIdDocumentFormControllerNode: FormControllerNode<SecureIdDocum
|
|||||||
case .postcode:
|
case .postcode:
|
||||||
valueKey = .address
|
valueKey = .address
|
||||||
errorKey = .field(.address(.postCode))
|
errorKey = .field(.address(.postCode))
|
||||||
|
case .city:
|
||||||
|
valueKey = .address
|
||||||
|
errorKey = .field(.address(.city))
|
||||||
default:
|
default:
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user