Various fixes

This commit is contained in:
Ilya Laktyushin 2021-02-14 17:44:19 +04:00
parent 9dd0e3f69e
commit 656f4899c2
4 changed files with 20 additions and 12 deletions

View File

@ -44,7 +44,11 @@ func isValidNumberOfUsers(_ number: String) -> Bool {
if number.rangeOfCharacter(from: invalidAmountCharacters) != nil || number == "0" { if number.rangeOfCharacter(from: invalidAmountCharacters) != nil || number == "0" {
return false return false
} }
return true if let _ = Int32(number) {
return true
} else {
return false
}
} }
private enum InviteLinksEditEntry: ItemListNodeEntry { private enum InviteLinksEditEntry: ItemListNodeEntry {
@ -55,7 +59,7 @@ private enum InviteLinksEditEntry: ItemListNodeEntry {
case timeInfo(PresentationTheme, String) case timeInfo(PresentationTheme, String)
case usageHeader(PresentationTheme, String) case usageHeader(PresentationTheme, String)
case usagePicker(PresentationTheme, InviteLinkUsageLimit) case usagePicker(PresentationTheme, PresentationDateTimeFormat, InviteLinkUsageLimit)
case usageCustomPicker(PresentationTheme, Int32?, Bool, Bool) case usageCustomPicker(PresentationTheme, Int32?, Bool, Bool)
case usageInfo(PresentationTheme, String) case usageInfo(PresentationTheme, String)
@ -135,8 +139,8 @@ private enum InviteLinksEditEntry: ItemListNodeEntry {
} else { } else {
return false return false
} }
case let .usagePicker(lhsTheme, lhsValue): case let .usagePicker(lhsTheme, lhsDateTimeFormat, lhsValue):
if case let .usagePicker(rhsTheme, rhsValue) = rhs, lhsTheme === rhsTheme, lhsValue == rhsValue { if case let .usagePicker(rhsTheme, rhsDateTimeFormat, rhsValue) = rhs, lhsTheme === rhsTheme, lhsDateTimeFormat == rhsDateTimeFormat, lhsValue == rhsValue {
return true return true
} else { } else {
return false return false
@ -209,8 +213,8 @@ private enum InviteLinksEditEntry: ItemListNodeEntry {
return ItemListTextItem(presentationData: presentationData, text: .plain(text), sectionId: self.section) return ItemListTextItem(presentationData: presentationData, text: .plain(text), sectionId: self.section)
case let .usageHeader(_, text): case let .usageHeader(_, text):
return ItemListSectionHeaderItem(presentationData: presentationData, text: text, sectionId: self.section) return ItemListSectionHeaderItem(presentationData: presentationData, text: text, sectionId: self.section)
case let .usagePicker(_, value): case let .usagePicker(_, dateTimeFormat, value):
return ItemListInviteLinkUsageLimitItem(theme: presentationData.theme, strings: presentationData.strings, value: value, enabled: true, sectionId: self.section, updated: { value in return ItemListInviteLinkUsageLimitItem(theme: presentationData.theme, strings: presentationData.strings, dateTimeFormat: dateTimeFormat, value: value, enabled: true, sectionId: self.section, updated: { value in
arguments.dismissInput() arguments.dismissInput()
arguments.updateState({ state in arguments.updateState({ state in
var updatedState = state var updatedState = state
@ -234,7 +238,9 @@ private enum InviteLinksEditEntry: ItemListNodeEntry {
} }
arguments.updateState { state in arguments.updateState { state in
var updatedState = state var updatedState = state
updatedState.usage = InviteLinkUsageLimit(value: Int32(updatedText)) if let value = Int32(updatedText) {
updatedState.usage = InviteLinkUsageLimit(value: value)
}
return updatedState return updatedState
} }
}, shouldUpdateText: { text in }, shouldUpdateText: { text in
@ -288,7 +294,7 @@ private func inviteLinkEditControllerEntries(invite: ExportedInvitation?, state:
entries.append(.timeInfo(presentationData.theme, presentationData.strings.InviteLink_Create_TimeLimitInfo)) entries.append(.timeInfo(presentationData.theme, presentationData.strings.InviteLink_Create_TimeLimitInfo))
entries.append(.usageHeader(presentationData.theme, presentationData.strings.InviteLink_Create_UsersLimit.uppercased())) entries.append(.usageHeader(presentationData.theme, presentationData.strings.InviteLink_Create_UsersLimit.uppercased()))
entries.append(.usagePicker(presentationData.theme, state.usage)) entries.append(.usagePicker(presentationData.theme, presentationData.dateTimeFormat, state.usage))
var customValue = false var customValue = false
if case .custom = state.usage { if case .custom = state.usage {

View File

@ -297,7 +297,7 @@ private func inviteLinkListControllerEntries(presentationData: PresentationData,
mainInvite = nil mainInvite = nil
} }
entries.append(.mainLinkHeader(presentationData.theme, isPublic ? presentationData.strings.InviteLink_PublicLink.uppercased() : presentationData.strings.InviteLink_PermanentLink.uppercased())) entries.append(.mainLinkHeader(presentationData.theme, isPublic ? presentationData.strings.InviteLink_PublicLink.uppercased() : presentationData.strings.InviteLink_InviteLink.uppercased()))
let importersCount: Int32 let importersCount: Int32
if let count = importers?.count { if let count = importers?.count {

View File

@ -89,14 +89,16 @@ enum InviteLinkUsageLimit: Equatable {
final class ItemListInviteLinkUsageLimitItem: ListViewItem, ItemListItem { final class ItemListInviteLinkUsageLimitItem: ListViewItem, ItemListItem {
let theme: PresentationTheme let theme: PresentationTheme
let strings: PresentationStrings let strings: PresentationStrings
let dateTimeFormat: PresentationDateTimeFormat
let value: InviteLinkUsageLimit let value: InviteLinkUsageLimit
let enabled: Bool let enabled: Bool
let sectionId: ItemListSectionId let sectionId: ItemListSectionId
let updated: (InviteLinkUsageLimit) -> Void let updated: (InviteLinkUsageLimit) -> Void
init(theme: PresentationTheme, strings: PresentationStrings, value: InviteLinkUsageLimit, enabled: Bool, sectionId: ItemListSectionId, updated: @escaping (InviteLinkUsageLimit) -> Void) { init(theme: PresentationTheme, strings: PresentationStrings, dateTimeFormat: PresentationDateTimeFormat, value: InviteLinkUsageLimit, enabled: Bool, sectionId: ItemListSectionId, updated: @escaping (InviteLinkUsageLimit) -> Void) {
self.theme = theme self.theme = theme
self.strings = strings self.strings = strings
self.dateTimeFormat = dateTimeFormat
self.value = value self.value = value
self.enabled = enabled self.enabled = enabled
self.sectionId = sectionId self.sectionId = sectionId
@ -285,7 +287,7 @@ private final class ItemListInviteLinkUsageLimitItemNode: ListViewItemNode {
let customTextString: String let customTextString: String
if case let .custom(value) = item.value { if case let .custom(value) = item.value {
customTextString = "\(value)" customTextString = compactNumericCountString(Int(value), decimalSeparator: item.dateTimeFormat.decimalSeparator)
} else { } else {
customTextString = "" customTextString = ""
} }

View File

@ -413,7 +413,7 @@ public func universalServiceMessageString(presentationData: (PresentationTheme,
let titleString = strings.Notification_VoiceChatEnded(callDurationString(strings: strings, value: duration)).0 let titleString = strings.Notification_VoiceChatEnded(callDurationString(strings: strings, value: duration)).0
attributedString = NSAttributedString(string: titleString, font: titleFont, textColor: primaryTextColor) attributedString = NSAttributedString(string: titleString, font: titleFont, textColor: primaryTextColor)
} else { } else {
var attributePeerIds: [(Int, PeerId?)] = [(0, message.author?.id)] let attributePeerIds: [(Int, PeerId?)] = [(0, message.author?.id)]
let titleString = strings.Notification_VoiceChatStarted(authorName) let titleString = strings.Notification_VoiceChatStarted(authorName)
attributedString = addAttributesToStringWithRanges(titleString, body: bodyAttributes, argumentAttributes: peerMentionsAttributes(primaryTextColor: primaryTextColor, peerIds: attributePeerIds)) attributedString = addAttributesToStringWithRanges(titleString, body: bodyAttributes, argumentAttributes: peerMentionsAttributes(primaryTextColor: primaryTextColor, peerIds: attributePeerIds))
} }