|
|
@@ -644,6 +644,33 @@ private extension ViewController {
|
|
644
|
644
|
openInDefaultBrowser(url: url)
|
|
645
|
645
|
}
|
|
646
|
646
|
|
|
|
647
|
+ private func shareAppURL() -> URL? {
|
|
|
648
|
+ if let configured = Bundle.main.object(forInfoDictionaryKey: "AppShareURL") as? String {
|
|
|
649
|
+ let trimmed = configured.trimmingCharacters(in: .whitespacesAndNewlines)
|
|
|
650
|
+ if trimmed.isEmpty == false, let url = URL(string: trimmed) {
|
|
|
651
|
+ return url
|
|
|
652
|
+ }
|
|
|
653
|
+ }
|
|
|
654
|
+ return nil
|
|
|
655
|
+ }
|
|
|
656
|
+
|
|
|
657
|
+ private func shareAppFromSettingsMenu() {
|
|
|
658
|
+ let appName = Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String
|
|
|
659
|
+ ?? Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as? String
|
|
|
660
|
+ ?? "Meetings App"
|
|
|
661
|
+ let message = "Check out \(appName) for managing and joining meetings."
|
|
|
662
|
+ let appURL = shareAppURL()
|
|
|
663
|
+ let shareItems: [Any] = appURL.map { [message, $0] } ?? [message]
|
|
|
664
|
+
|
|
|
665
|
+ let picker = NSSharingServicePicker(items: shareItems)
|
|
|
666
|
+ let anchorView = sidebarRowViews[.settings] ?? view
|
|
|
667
|
+ picker.show(relativeTo: anchorView.bounds, of: anchorView, preferredEdge: .maxX)
|
|
|
668
|
+
|
|
|
669
|
+ let clipboardText = ([message, appURL?.absoluteString].compactMap { $0 }).joined(separator: "\n")
|
|
|
670
|
+ NSPasteboard.general.clearContents()
|
|
|
671
|
+ NSPasteboard.general.setString(clipboardText, forType: .string)
|
|
|
672
|
+ }
|
|
|
673
|
+
|
|
647
|
674
|
private func showSidebarPage(_ page: SidebarPage) {
|
|
648
|
675
|
selectedSidebarPage = page
|
|
649
|
676
|
updateSidebarAppearance()
|
|
|
@@ -744,10 +771,9 @@ private extension ViewController {
|
|
744
|
771
|
openInAppBrowser(with: url, policy: inAppBrowserDefaultPolicy)
|
|
745
|
772
|
}
|
|
746
|
773
|
case .shareApp:
|
|
747
|
|
- let urlString = "https://example.com"
|
|
748
|
|
- NSPasteboard.general.clearContents()
|
|
749
|
|
- NSPasteboard.general.setString(urlString, forType: .string)
|
|
750
|
|
- showSimpleAlert(title: "Share App", message: "Link copied to clipboard:\n\(urlString)")
|
|
|
774
|
+ settingsPopover?.performClose(nil)
|
|
|
775
|
+ settingsPopover = nil
|
|
|
776
|
+ shareAppFromSettingsMenu()
|
|
751
|
777
|
case .upgrade:
|
|
752
|
778
|
settingsPopover?.performClose(nil)
|
|
753
|
779
|
settingsPopover = nil
|