Skip to content

Commit

Permalink
Merge pull request #1067 from TortugaPower/fix-sharing-mac
Browse files Browse the repository at this point in the history
Fix sharing debug information from a Mac
  • Loading branch information
GianniCarlo authored Jan 6, 2024
2 parents bd2a275 + 4e86b32 commit 259574d
Show file tree
Hide file tree
Showing 5 changed files with 67 additions and 9 deletions.
12 changes: 8 additions & 4 deletions BookPlayer.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,7 @@
6340D56E2AF13E4C003D0B09 /* RectangularView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6340D56D2AF13E4C003D0B09 /* RectangularView.swift */; };
63432B592AC1E6F7002619D0 /* MockNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63432B582AC1E6F7002619D0 /* MockNavigationController.swift */; };
634E67462AFC7DEF00595BAC /* BookStartPlaybackIntent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 634E67432AFB2DF500595BAC /* BookStartPlaybackIntent.swift */; };
6354CD9C2B4902CE006D9551 /* DebugInformationActivityItemSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6354CD9B2B4902CE006D9551 /* DebugInformationActivityItemSource.swift */; };
6356F9B52AC7CC5600B7A027 /* CancelSleepTimerIntent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6356F9B42AC7CC5600B7A027 /* CancelSleepTimerIntent.swift */; };
6356F9B92AC7CDDE00B7A027 /* EndChapterSleepTimerIntent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6356F9B82AC7CDDE00B7A027 /* EndChapterSleepTimerIntent.swift */; };
6356F9BD2AC7CFFB00B7A027 /* CustomSleepTimerIntent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6356F9BC2AC7CFFB00B7A027 /* CustomSleepTimerIntent.swift */; };
Expand All @@ -352,7 +353,7 @@
6356F9D02ACB01C700B7A027 /* PausePlaybackIntent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6356F9CF2ACB01C700B7A027 /* PausePlaybackIntent.swift */; };
6357F1192A8BA084007947FC /* BPURLSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6357F1182A8BA084007947FC /* BPURLSession.swift */; };
6357F11A2A8BA084007947FC /* BPURLSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6357F1182A8BA084007947FC /* BPURLSession.swift */; };
635907A02B161B14002FA524 /* DebugInformationActivityItemProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6359079F2B161B14002FA524 /* DebugInformationActivityItemProvider.swift */; };
635907A02B161B14002FA524 /* DebugInformationFileActivityItemProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6359079F2B161B14002FA524 /* DebugInformationFileActivityItemProvider.swift */; };
637609192ADCD81400A01D5D /* AppShortcuts.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6376091B2ADCD81400A01D5D /* AppShortcuts.strings */; };
637DAB0B2AEB3F6D006DC2D1 /* WidgetEntries.swift in Sources */ = {isa = PBXBuildFile; fileRef = 637DAB092AEB3E0D006DC2D1 /* WidgetEntries.swift */; };
637DAB0D2AEBEF1B006DC2D1 /* BookPlayerWatchKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4140EA5E227289720009F794 /* BookPlayerWatchKit.framework */; };
Expand Down Expand Up @@ -1050,6 +1051,7 @@
6340D56D2AF13E4C003D0B09 /* RectangularView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RectangularView.swift; sourceTree = "<group>"; };
63432B582AC1E6F7002619D0 /* MockNavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockNavigationController.swift; sourceTree = "<group>"; };
634E67432AFB2DF500595BAC /* BookStartPlaybackIntent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookStartPlaybackIntent.swift; sourceTree = "<group>"; };
6354CD9B2B4902CE006D9551 /* DebugInformationActivityItemSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DebugInformationActivityItemSource.swift; sourceTree = "<group>"; };
6356F9B42AC7CC5600B7A027 /* CancelSleepTimerIntent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CancelSleepTimerIntent.swift; sourceTree = "<group>"; };
6356F9B82AC7CDDE00B7A027 /* EndChapterSleepTimerIntent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EndChapterSleepTimerIntent.swift; sourceTree = "<group>"; };
6356F9BC2AC7CFFB00B7A027 /* CustomSleepTimerIntent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomSleepTimerIntent.swift; sourceTree = "<group>"; };
Expand All @@ -1058,7 +1060,7 @@
6356F9C92AC8A1B700B7A027 /* DatabaseInitializer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DatabaseInitializer.swift; sourceTree = "<group>"; };
6356F9CF2ACB01C700B7A027 /* PausePlaybackIntent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PausePlaybackIntent.swift; sourceTree = "<group>"; };
6357F1182A8BA084007947FC /* BPURLSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BPURLSession.swift; sourceTree = "<group>"; };
6359079F2B161B14002FA524 /* DebugInformationActivityItemProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DebugInformationActivityItemProvider.swift; sourceTree = "<group>"; };
6359079F2B161B14002FA524 /* DebugInformationFileActivityItemProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DebugInformationFileActivityItemProvider.swift; sourceTree = "<group>"; };
6376091A2ADCD81400A01D5D /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/AppShortcuts.strings; sourceTree = "<group>"; };
6376091C2ADCD82100A01D5D /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/AppShortcuts.strings; sourceTree = "<group>"; };
6376091D2ADCD82100A01D5D /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/AppShortcuts.strings"; sourceTree = "<group>"; };
Expand Down Expand Up @@ -2090,7 +2092,8 @@
419723FF21874D5F00AB1190 /* UserActivityManager.swift */,
41D39D40215F177D00B65290 /* BookActivityItemProvider.swift */,
9FC1A29E28C0D8CC00F25906 /* BookmarksActivityItemProvider.swift */,
6359079F2B161B14002FA524 /* DebugInformationActivityItemProvider.swift */,
6359079F2B161B14002FA524 /* DebugInformationFileActivityItemProvider.swift */,
6354CD9B2B4902CE006D9551 /* DebugInformationActivityItemSource.swift */,
41B30A32230232D200025D69 /* CarPlayManager.swift */,
4193E201243A91AE004D6A82 /* ActionParserService.swift */,
9F82DF9B27DFE46B001B0EA8 /* PhoneWatchConnectivityService.swift */,
Expand Down Expand Up @@ -3396,7 +3399,7 @@
416AAC3323F51031005AD04F /* LocalizableButton.swift in Sources */,
416A297D2568671F00605395 /* AVPlayer+BookPlayer.swift in Sources */,
41E79BEB26C60DC600EA9FFF /* PlayerViewModel.swift in Sources */,
635907A02B161B14002FA524 /* DebugInformationActivityItemProvider.swift in Sources */,
635907A02B161B14002FA524 /* DebugInformationFileActivityItemProvider.swift in Sources */,
9F5FBB0A293EE0C2009F4B0E /* ItemDetailsViewModel.swift in Sources */,
6309F1262B0CF1C1002B86A4 /* BookPlaybackToggleIntent.swift in Sources */,
9FC1A29F28C0D8CC00F25906 /* BookmarksActivityItemProvider.swift in Sources */,
Expand All @@ -3407,6 +3410,7 @@
C3EC372E206EE0650094B4E8 /* SleepTimer.swift in Sources */,
4124122A26D19B9100B099DB /* StorageItem.swift in Sources */,
41A1B12F226FE0F900EA0400 /* Notification+BookPlayer.swift in Sources */,
6354CD9C2B4902CE006D9551 /* DebugInformationActivityItemSource.swift in Sources */,
6356F9BD2AC7CFFB00B7A027 /* CustomSleepTimerIntent.swift in Sources */,
9F4691FA2800F8D600A8F0E8 /* AccountCoordinator.swift in Sources */,
412AB70E2701463100969618 /* LoadingViewModel.swift in Sources */,
Expand Down
11 changes: 9 additions & 2 deletions BookPlayer/Coordinators/SettingsCoordinator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -218,9 +218,16 @@ class SettingsCoordinator: Coordinator, AlertPresenter {
}

func shareDebugInformation(info: String) {
let provider = DebugInformationActivityItemProvider(info: info)
let shareController: UIActivityViewController

let shareController = UIActivityViewController(activityItems: [provider], applicationActivities: nil)
/// Sharing a txt file does not work well on a Mac, it's better to just share the info string
if ProcessInfo.processInfo.isiOSAppOnMac {
let source = DebugInformationActivityItemSource(info: info)
shareController = UIActivityViewController(activityItems: [source], applicationActivities: nil)
} else {
let provider = DebugInformationFileActivityItemProvider(info: info)
shareController = UIActivityViewController(activityItems: [provider], applicationActivities: nil)
}

if let popoverPresentationController = shareController.popoverPresentationController,
let view = flow.navigationController.topViewController?.view {
Expand Down
2 changes: 1 addition & 1 deletion BookPlayer/Player/PlayerManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -603,7 +603,7 @@ final class PlayerManager: NSObject, PlayerManagerProtocol {

extension PlayerManager {
func jumpToChapter(_ chapter: PlayableChapter) {
jumpTo(chapter.start + 0.5, recordBookmark: false)
jumpTo(chapter.start + 0.1, recordBookmark: false)
}

func initializeChapterTime(_ time: Double) {
Expand Down
47 changes: 47 additions & 0 deletions BookPlayer/Services/DebugInformationActivityItemSource.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
//
// DebugInformationActivityItemSource.swift
// BookPlayer
//
// Created by Gianni Carlo on 5/1/24.
// Copyright © 2024 Tortuga Power. All rights reserved.
//

import LinkPresentation

/// Share the debug information as a single String
class DebugInformationActivityItemSource: NSObject, UIActivityItemSource {
let title = "Debug information"
let info: String

init(info: String) {
self.info = info
super.init()
}

func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any {
return info
}

func activityViewController(
_ activityViewController: UIActivityViewController,
itemForActivityType activityType: UIActivity.ActivityType?
) -> Any? {
return info
}

func activityViewController(
_ activityViewController: UIActivityViewController,
subjectForActivityType activityType: UIActivity.ActivityType?
) -> String {
return title
}

func activityViewControllerLinkMetadata(
_ activityViewController: UIActivityViewController
) -> LPLinkMetadata? {
let metadata = LPLinkMetadata()
metadata.title = title
metadata.iconProvider = NSItemProvider(object: UIImage(systemName: "line.3.horizontal")!)
return metadata
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
//
// DebugInformationActivityItemProvider.swift
// DebugInformationFileActivityItemProvider.swift
// BookPlayer
//
// Created by Gianni Carlo on 28/11/23.
Expand All @@ -9,7 +9,7 @@
import BookPlayerKit
import Foundation

final class DebugInformationActivityItemProvider: UIActivityItemProvider {
final class DebugInformationFileActivityItemProvider: UIActivityItemProvider {
let info: String

init(info: String) {
Expand Down

0 comments on commit 259574d

Please sign in to comment.