mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-08-02 00:17:02 +00:00
Group boosts
This commit is contained in:
parent
fca918a106
commit
ed7252b489
@ -11010,8 +11010,8 @@ Sorry for the inconvenience.";
|
||||
"GroupBoost.Title.Other" = "Help Upgrade This Group";
|
||||
"GroupBoost.Title.Current" = "Boost Group";
|
||||
|
||||
"GroupBoost.EnableStoriesText" = "Your group needs %1$@ to enable posting stories.\n\nAsk your **Premium** members to boost your group with this link:";
|
||||
"GroupBoost.IncreaseLimitText" = "Your group needs %1$@ to post %2$@.\n\nAsk your **Premium** members to boost your group with this link:";
|
||||
"GroupBoost.EnableStoriesText" = "Your group needs %1$@ to enable posting stories.";
|
||||
"GroupBoost.IncreaseLimitText" = "Your group needs %1$@ to post %2$@.";
|
||||
|
||||
"BoostGift.Group.Description" = "Get more boosts for your group by gifting\nPremium to your subscribers.";
|
||||
|
||||
|
@ -959,6 +959,7 @@ public protocol SharedAccountContext: AnyObject {
|
||||
func makePremiumLimitController(context: AccountContext, subject: PremiumLimitSubject, count: Int32, forceDark: Bool, cancel: @escaping () -> Void, action: @escaping () -> Bool) -> ViewController
|
||||
func makePremiumGiftController(context: AccountContext, source: PremiumGiftSource) -> ViewController
|
||||
func makePremiumPrivacyControllerController(context: AccountContext, subject: PremiumPrivacySubject, peerId: EnginePeer.Id) -> ViewController
|
||||
func makePremiumBoostLevelsController(context: AccountContext, peerId: EnginePeer.Id, boostStatus: ChannelBoostStatus, myBoostStatus: MyBoostStatus, forceDark: Bool) -> ViewController
|
||||
|
||||
func makeStickerPackScreen(context: AccountContext, updatedPresentationData: (initial: PresentationData, signal: Signal<PresentationData, NoError>)?, mainStickerPack: StickerPackReference, stickerPacks: [StickerPackReference], loadedStickerPacks: [LoadedStickerPack], parentNavigationController: NavigationController?, sendSticker: ((FileMediaReference, UIView, CGRect) -> Bool)?) -> ViewController
|
||||
|
||||
|
@ -606,11 +606,11 @@ private final class SheetContent: CombinedComponent {
|
||||
switch subject {
|
||||
case .stories:
|
||||
if level == 0 {
|
||||
textString = strings.ChannelBoost_EnableStoriesText(valueString).string
|
||||
textString = isGroup ? strings.GroupBoost_EnableStoriesText(valueString).string : strings.ChannelBoost_EnableStoriesText(valueString).string
|
||||
} else {
|
||||
textString = strings.ChannelBoost_IncreaseLimitText(valueString, storiesString).string
|
||||
textString = isGroup ? strings.GroupBoost_IncreaseLimitText(valueString, storiesString).string : strings.ChannelBoost_IncreaseLimitText(valueString, storiesString).string
|
||||
}
|
||||
needsSecondParagraph = false
|
||||
needsSecondParagraph = isGroup
|
||||
case let .channelReactions(reactionCount):
|
||||
textString = strings.ChannelBoost_CustomReactionsText("\(reactionCount)", "\(reactionCount)").string
|
||||
needsSecondParagraph = false
|
||||
@ -1584,7 +1584,7 @@ public class PremiumBoostLevelsScreen: ViewController {
|
||||
init(context: AccountContext, controller: PremiumBoostLevelsScreen) {
|
||||
self.presentationData = context.sharedContext.currentPresentationData.with { $0 }
|
||||
if controller.forceDark {
|
||||
self.presentationData = self.presentationData.withUpdated(theme: defaultDarkPresentationTheme)
|
||||
self.presentationData = self.presentationData.withUpdated(theme: defaultDarkColorPresentationTheme)
|
||||
}
|
||||
self.presentationData = self.presentationData.withUpdated(theme: self.presentationData.theme.withModalBlocksBackground())
|
||||
|
||||
|
@ -1706,20 +1706,6 @@ private func editingItems(data: PeerInfoScreenData?, state: PeerInfoState, chatL
|
||||
}))
|
||||
}
|
||||
|
||||
// if isCreator || (channel.adminRights != nil && channel.hasPermission(.sendSomething)) {
|
||||
// let messagesShouldHaveSignatures: Bool
|
||||
// switch channel.info {
|
||||
// case let .broadcast(info):
|
||||
// messagesShouldHaveSignatures = info.flags.contains(.messagesShouldHaveSignatures)
|
||||
// default:
|
||||
// messagesShouldHaveSignatures = false
|
||||
// }
|
||||
// items[.peerSettings]!.append(PeerInfoScreenSwitchItem(id: ItemSignMessages, text: presentationData.strings.Channel_SignMessages, value: messagesShouldHaveSignatures, icon: UIImage(bundleImageName: "Chat/Info/GroupSignIcon"), toggled: { value in
|
||||
// interaction.editingToggleMessageSignatures(value)
|
||||
// }))
|
||||
// items[.peerSettings]!.append(PeerInfoScreenCommentItem(id: ItemSignMessagesHelp, text: presentationData.strings.Channel_SignMessages_Help))
|
||||
// }
|
||||
|
||||
var canEditMembers = false
|
||||
if channel.hasPermission(.banMembers) && (channel.adminRights != nil || channel.flags.contains(.isCreator)) {
|
||||
canEditMembers = true
|
||||
|
@ -1119,32 +1119,33 @@ final class ShareWithPeersScreenComponent: Component {
|
||||
let _ = combineLatest(
|
||||
queue: Queue.mainQueue(),
|
||||
component.context.engine.data.get(TelegramEngine.EngineData.Item.Peer.Peer(id: peer.id)),
|
||||
component.context.engine.peers.getChannelBoostStatus(peerId: peer.id)
|
||||
).start(next: { [weak self] peer, status in
|
||||
guard let self, let component = self.component, let peer, let status else {
|
||||
component.context.engine.peers.getChannelBoostStatus(peerId: peer.id),
|
||||
component.context.engine.peers.getMyBoostStatus()
|
||||
).start(next: { [weak self] peer, boostStatus, myBoostStatus in
|
||||
guard let self, let component = self.component, let peer, let boostStatus, let myBoostStatus else {
|
||||
return
|
||||
}
|
||||
|
||||
let link = status.url
|
||||
if let navigationController = self.environment?.controller()?.navigationController as? NavigationController {
|
||||
if let previousController = navigationController.viewControllers.last as? ShareWithPeersScreen {
|
||||
previousController.dismiss()
|
||||
}
|
||||
let presentationData = component.context.sharedContext.currentPresentationData.with { $0 }
|
||||
let controller = component.context.sharedContext.makePremiumLimitController(context: component.context, subject: .storiesChannelBoost(peer: peer, isCurrent: true, level: Int32(status.level), currentLevelBoosts: Int32(status.currentLevelBoosts), nextLevelBoosts: status.nextLevelBoosts.flatMap(Int32.init), link: link, myBoostCount: 0, canBoostAgain: false), count: Int32(status.boosts), forceDark: true, cancel: {}, action: { [weak navigationController] in
|
||||
UIPasteboard.general.string = link
|
||||
|
||||
if let previousController = navigationController?.viewControllers.reversed().first(where: { $0 is ShareWithPeersScreen}) as? ShareWithPeersScreen {
|
||||
previousController.dismiss(completion: { [weak navigationController] in
|
||||
Queue.mainQueue().justDispatch {
|
||||
if let controller = navigationController?.viewControllers.last as? ViewController {
|
||||
controller.present(UndoOverlayController(presentationData: presentationData, content: .linkCopied(text: presentationData.strings.ChannelBoost_BoostLinkCopied), elevatedLayout: true, position: .top, animateInAsReplacement: false, action: { _ in return false }), in: .current)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
return true
|
||||
})
|
||||
// let presentationData = component.context.sharedContext.currentPresentationData.with { $0 }
|
||||
// let controller = component.context.sharedContext.makePremiumLimitController(context: component.context, subject: .storiesChannelBoost(peer: peer, isCurrent: true, level: Int32(status.level), currentLevelBoosts: Int32(status.currentLevelBoosts), nextLevelBoosts: status.nextLevelBoosts.flatMap(Int32.init), link: link, myBoostCount: 0, canBoostAgain: false), count: Int32(status.boosts), forceDark: true, cancel: {}, action: { [weak navigationController] in
|
||||
// UIPasteboard.general.string = link
|
||||
//
|
||||
// if let previousController = navigationController?.viewControllers.reversed().first(where: { $0 is ShareWithPeersScreen}) as? ShareWithPeersScreen {
|
||||
// previousController.dismiss(completion: { [weak navigationController] in
|
||||
// Queue.mainQueue().justDispatch {
|
||||
// if let controller = navigationController?.viewControllers.last as? ViewController {
|
||||
// controller.present(UndoOverlayController(presentationData: presentationData, content: .linkCopied(text: presentationData.strings.ChannelBoost_BoostLinkCopied), elevatedLayout: true, position: .top, animateInAsReplacement: false, action: { _ in return false }), in: .current)
|
||||
// }
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
// return true
|
||||
// })
|
||||
let controller = component.context.sharedContext.makePremiumBoostLevelsController(context: component.context, peerId: peer.id, boostStatus: boostStatus, myBoostStatus: myBoostStatus, forceDark: true)
|
||||
navigationController.pushViewController(controller)
|
||||
}
|
||||
|
||||
|
@ -2203,6 +2203,42 @@ public final class SharedAccountContextImpl: SharedAccountContext {
|
||||
return controller
|
||||
}
|
||||
|
||||
public func makePremiumBoostLevelsController(context: AccountContext, peerId: EnginePeer.Id, boostStatus: ChannelBoostStatus, myBoostStatus: MyBoostStatus, forceDark: Bool) -> ViewController {
|
||||
var pushImpl: ((ViewController) -> Void)?
|
||||
var dismissImpl: (() -> Void)?
|
||||
let controller = PremiumBoostLevelsScreen(
|
||||
context: context,
|
||||
peerId: peerId,
|
||||
mode: .owner(subject: .stories),
|
||||
status: boostStatus,
|
||||
myBoostStatus: myBoostStatus,
|
||||
openStats: nil,
|
||||
openGift: {
|
||||
var updatedPresentationData: (initial: PresentationData, signal: Signal<PresentationData, NoError>)?
|
||||
if forceDark {
|
||||
let presentationData = context.sharedContext.currentPresentationData.with { $0 }.withUpdated(theme: defaultDarkColorPresentationTheme)
|
||||
updatedPresentationData = (presentationData, .single(presentationData))
|
||||
}
|
||||
let controller = createGiveawayController(context: context, updatedPresentationData: updatedPresentationData, peerId: peerId, subject: .generic)
|
||||
pushImpl?(controller)
|
||||
|
||||
Queue.mainQueue().after(0.4) {
|
||||
dismissImpl?()
|
||||
}
|
||||
},
|
||||
forceDark: forceDark
|
||||
)
|
||||
pushImpl = { [weak controller] c in
|
||||
controller?.push(c)
|
||||
}
|
||||
dismissImpl = { [weak controller] in
|
||||
if let controller, let navigationController = controller.navigationController as? NavigationController {
|
||||
navigationController.setViewControllers(navigationController.viewControllers.filter { !($0 is PremiumBoostLevelsScreen) }, animated: false)
|
||||
}
|
||||
}
|
||||
return controller
|
||||
}
|
||||
|
||||
public func makeStickerPackScreen(context: AccountContext, updatedPresentationData: (initial: PresentationData, signal: Signal<PresentationData, NoError>)?, mainStickerPack: StickerPackReference, stickerPacks: [StickerPackReference], loadedStickerPacks: [LoadedStickerPack], parentNavigationController: NavigationController?, sendSticker: ((FileMediaReference, UIView, CGRect) -> Bool)?) -> ViewController {
|
||||
return StickerPackScreen(context: context, updatedPresentationData: updatedPresentationData, mainStickerPack: mainStickerPack, stickerPacks: stickerPacks, loadedStickerPacks: loadedStickerPacks, parentNavigationController: parentNavigationController, sendSticker: sendSticker)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user