Bot preview improvements

This commit is contained in:
Isaac
2024-07-26 00:03:54 +08:00
parent df31800dcd
commit b67485c260
7 changed files with 68 additions and 19 deletions

View File

@@ -11,6 +11,7 @@ import SearchUI
public class LanguageSelectionScreen: ViewController {
private let context: AccountContext
private let excludeIds: [String]
private let selectLocalization: (LocalizationInfo) -> Void
private var controllerNode: LanguageSelectionScreenNode {
@@ -29,8 +30,9 @@ public class LanguageSelectionScreen: ViewController {
private var previousContentOffset: ListViewVisibleContentOffset?
public init(context: AccountContext, selectLocalization: @escaping (LocalizationInfo) -> Void) {
public init(context: AccountContext, excludeIds: [String] = [], selectLocalization: @escaping (LocalizationInfo) -> Void) {
self.context = context
self.excludeIds = excludeIds
self.selectLocalization = selectLocalization
self.presentationData = context.sharedContext.currentPresentationData.with { $0 }
@@ -92,7 +94,7 @@ public class LanguageSelectionScreen: ViewController {
}
override public func loadDisplayNode() {
self.displayNode = LanguageSelectionScreenNode(context: self.context, presentationData: self.presentationData, navigationBar: self.navigationBar!, requestActivateSearch: { [weak self] in
self.displayNode = LanguageSelectionScreenNode(context: self.context, presentationData: self.presentationData, navigationBar: self.navigationBar!, excludeIds: self.excludeIds, requestActivateSearch: { [weak self] in
self?.activateSearch()
}, requestDeactivateSearch: { [weak self] in
self?.deactivateSearch()

View File

@@ -294,6 +294,7 @@ final class LanguageSelectionScreenNode: ViewControllerTracingNode {
private let context: AccountContext
private var presentationData: PresentationData
private weak var navigationBar: NavigationBar?
private let excludeIds: [String]
private let requestActivateSearch: () -> Void
private let requestDeactivateSearch: () -> Void
private let present: (ViewController, Any?) -> Void
@@ -316,11 +317,12 @@ final class LanguageSelectionScreenNode: ViewControllerTracingNode {
private var currentListState: LocalizationListState?
init(context: AccountContext, presentationData: PresentationData, navigationBar: NavigationBar, requestActivateSearch: @escaping () -> Void, requestDeactivateSearch: @escaping () -> Void, present: @escaping (ViewController, Any?) -> Void, push: @escaping (ViewController) -> Void, selectLocalization: @escaping (LocalizationInfo) -> Void) {
init(context: AccountContext, presentationData: PresentationData, navigationBar: NavigationBar, excludeIds: [String], requestActivateSearch: @escaping () -> Void, requestDeactivateSearch: @escaping () -> Void, present: @escaping (ViewController, Any?) -> Void, push: @escaping (ViewController) -> Void, selectLocalization: @escaping (LocalizationInfo) -> Void) {
self.context = context
self.presentationData = presentationData
self.presentationDataValue.set(.single(presentationData))
self.navigationBar = navigationBar
self.excludeIds = excludeIds
self.requestActivateSearch = requestActivateSearch
self.requestDeactivateSearch = requestDeactivateSearch
self.present = present
@@ -362,6 +364,12 @@ final class LanguageSelectionScreenNode: ViewControllerTracingNode {
var entries: [LanguageListEntry] = []
var existingIds = Set<String>()
var localizationListState = localizationListState
localizationListState.availableOfficialLocalizations = localizationListState.availableOfficialLocalizations.filter {
!strongSelf.excludeIds.contains($0.languageCode)
}
localizationListState.availableSavedLocalizations = []
if !localizationListState.availableOfficialLocalizations.isEmpty {
strongSelf.currentListState = localizationListState