Folder improvements

This commit is contained in:
Ali
2023-04-04 23:31:04 +04:00
parent 361fa693d9
commit 55b5918841
8 changed files with 177 additions and 22 deletions

View File

@@ -1159,19 +1159,46 @@ private final class ChatFolderLinkPreviewScreenComponent: Component {
return
}
let context = component.context
let navigationController = controller.navigationController as? NavigationController
switch error {
case .generic:
controller.dismiss()
case let .dialogFilterLimitExceeded(limit, _):
let limitController = PremiumLimitScreen(context: component.context, subject: .folders, count: limit, action: {})
let limitController = PremiumLimitScreen(context: component.context, subject: .folders, count: limit, action: { [weak navigationController] in
guard let navigationController else {
return
}
navigationController.pushViewController(PremiumIntroScreen(context: context, source: .folders))
})
controller.push(limitController)
controller.dismiss()
case let .sharedFolderLimitExceeded(limit, _):
let limitController = PremiumLimitScreen(context: component.context, subject: .membershipInSharedFolders, count: limit, action: {})
let limitController = PremiumLimitScreen(context: component.context, subject: .membershipInSharedFolders, count: limit, action: { [weak navigationController] in
guard let navigationController else {
return
}
navigationController.pushViewController(PremiumIntroScreen(context: context, source: .membershipInSharedFolders))
})
controller.push(limitController)
controller.dismiss()
case let .tooManyChannels(limit, _):
let limitController = PremiumLimitScreen(context: component.context, subject: .chatsPerFolder, count: limit, action: {})
let limitController = PremiumLimitScreen(context: component.context, subject: .chatsPerFolder, count: limit, action: { [weak navigationController] in
guard let navigationController else {
return
}
navigationController.pushViewController(PremiumIntroScreen(context: component.context, source: .chatsPerFolder))
})
controller.push(limitController)
controller.dismiss()
case let .tooManyChannelsInAccount(limit, _):
let limitController = PremiumLimitScreen(context: component.context, subject: .channels, count: limit, action: { [weak navigationController] in
guard let navigationController else {
return
}
navigationController.pushViewController(PremiumIntroScreen(context: component.context, source: .groupsAndChannels))
})
controller.push(limitController)
controller.dismiss()
}
@@ -1391,23 +1418,56 @@ private final class ChatFolderLinkPreviewScreenComponent: Component {
return
}
let context = component.context
let navigationController = controller.navigationController as? NavigationController
//TODO:localize
let text: String
switch error {
case .generic:
text = "An error occurred"
case let .sharedFolderLimitExceeded(limit, _):
let limitController = component.context.sharedContext.makePremiumLimitController(context: component.context, subject: .membershipInSharedFolders, count: limit, action: {
let limitController = component.context.sharedContext.makePremiumLimitController(context: component.context, subject: .membershipInSharedFolders, count: limit, action: { [weak navigationController] in
guard let navigationController else {
return
}
navigationController.pushViewController(PremiumIntroScreen(context: context, source: .membershipInSharedFolders))
})
controller.push(limitController)
return
case let .limitExceeded(limit, _):
let limitController = component.context.sharedContext.makePremiumLimitController(context: component.context, subject: .linksPerSharedFolder, count: limit, action: {
let limitController = component.context.sharedContext.makePremiumLimitController(context: component.context, subject: .linksPerSharedFolder, count: limit, action: { [weak navigationController] in
guard let navigationController else {
return
}
navigationController.pushViewController(PremiumIntroScreen(context: component.context, source: .linksPerSharedFolder))
})
controller.push(limitController)
return
case let .tooManyChannels(limit, _):
let limitController = PremiumLimitScreen(context: component.context, subject: .chatsPerFolder, count: limit, action: { [weak navigationController] in
guard let navigationController else {
return
}
navigationController.pushViewController(PremiumIntroScreen(context: component.context, source: .chatsPerFolder))
})
controller.push(limitController)
controller.dismiss()
return
case let .tooManyChannelsInAccount(limit, _):
let limitController = PremiumLimitScreen(context: component.context, subject: .channels, count: limit, action: { [weak navigationController] in
guard let navigationController else {
return
}
navigationController.pushViewController(PremiumIntroScreen(context: component.context, source: .groupsAndChannels))
})
controller.push(limitController)
controller.dismiss()
return
}
let presentationData = component.context.sharedContext.currentPresentationData.with { $0 }