TM-SGNL-iOS/Signal/Usernames/Links/UsernameLinkShareSheetViewController.swift
TeleMessage developers dde0620daf initial commit
2025-05-03 12:28:28 -07:00

93 lines
3 KiB
Swift

//
// Copyright 2023 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import SignalServiceKit
import SignalUI
class UsernameLinkShareSheetViewController: OWSTableSheetViewController {
private let usernameLink: Usernames.UsernameLink
private let didCopyUsername: (() -> Void)?
init(
usernameLink: Usernames.UsernameLink,
didCopyUsername: (() -> Void)? = nil
) {
self.usernameLink = usernameLink
self.didCopyUsername = didCopyUsername
}
// MARK: - Table contents
override func updateTableContents(shouldReload: Bool = true) {
let contents = OWSTableContents()
let displayLinkSection = OWSTableSection(
items: [
.label(
withText: usernameLink.url.absoluteString,
accessoryType: .none
)
],
headerView: { () -> UIView in
let label = UILabel()
label.numberOfLines = 0
label.lineBreakMode = .byWordWrapping
label.font = .dynamicTypeFootnote
label.textColor = Theme.secondaryTextAndIconColor
label.textAlignment = .center
label.layoutMargins = UIEdgeInsets(hMargin: 8, vMargin: 0)
label.text = OWSLocalizedString(
"USERNAME_LINK_SHARE_SHEET_HEADER",
comment: "Text describing what you can do with a username link, on a sheet for sharing it."
)
let wrapper = UIView()
wrapper.layoutMargins = UIEdgeInsets(hMargin: 24, vMargin: 20)
wrapper.addSubview(label)
label.autoPinEdgesToSuperviewMargins()
return wrapper
}()
)
let actionsSection = OWSTableSection(items: [
.item(
icon: .buttonCopy,
name: OWSLocalizedString(
"USERNAME_LINK_SHARE_SHEET_COPY_LINK_ACTION",
comment: "Text for a tappable cell that copies the user's username link when selected."
),
actionBlock: { [weak self] in
guard let self else { return }
UIPasteboard.general.url = self.usernameLink.url
self.didCopyUsername?()
}
),
.item(
icon: .buttonShare,
name: CommonStrings.shareButton,
actionBlock: { [weak self] in
guard let self else { return }
ShareActivityUtil.present(
activityItems: [self.usernameLink.url],
from: self,
sourceView: self.view
)
}
)
])
contents.add(sections: [
displayLinkSection,
actionsSection
])
self.tableViewController.setContents(contents, shouldReload: shouldReload)
}
}