Skip to content

Commit

Permalink
Merge release/7.82 into trunk (#2732)
Browse files Browse the repository at this point in the history
  • Loading branch information
danielebogo authored Feb 6, 2025
2 parents e18efac + 5deaf48 commit 3baf5a1
Show file tree
Hide file tree
Showing 19 changed files with 158 additions and 16 deletions.
2 changes: 1 addition & 1 deletion config/Version.xcconfig
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
VERSION_LONG = 7.82.0.1
VERSION_LONG = 7.82.0.2
VERSION_SHORT = 7.82
41 changes: 30 additions & 11 deletions podcasts.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -680,6 +680,7 @@
9A4BB1F32D4A3F2A00B68D94 /* CustomRefreshControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A4BB1F22D4A3F2A00B68D94 /* CustomRefreshControl.swift */; };
9A509DE02D14606100E8CEB1 /* CancelSubscriptionOfferSuccessView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A509DDF2D14606100E8CEB1 /* CancelSubscriptionOfferSuccessView.swift */; };
9AA3B6312D27F0B600A0E30E /* CancelSubscriptionPlansViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AA3B6302D27F0B600A0E30E /* CancelSubscriptionPlansViewModel.swift */; };
9AB645182D5138B200A842C8 /* Pocket Casts App Clip.app in Embed App Clips */ = {isa = PBXBuildFile; fileRef = F5D5F7792CEBE769001F492D /* Pocket Casts App Clip.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
BD001B892174260B00504DD3 /* FilterManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD001B882174260B00504DD3 /* FilterManager.swift */; };
BD00CB2B24BD20CD00A10257 /* TimeStepperCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD00CB2924BD20CD00A10257 /* TimeStepperCell.swift */; };
BD00CB2C24BD20CD00A10257 /* TimeStepperCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BD00CB2A24BD20CD00A10257 /* TimeStepperCell.xib */; };
Expand Down Expand Up @@ -1895,7 +1896,6 @@
F5F509702CEBF8B8007D6E39 /* SJCommonUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = BD2A49E51701A6AE00C2F192 /* SJCommonUtils.m */; };
F5F509712CEBF8C1007D6E39 /* SJMediaMetadataHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = BDA156EA187E5EE600F5D412 /* SJMediaMetadataHelper.m */; };
F5F509722CEBF8C8007D6E39 /* MNAVChapterReader.m in Sources */ = {isa = PBXBuildFile; fileRef = BDF0D4B323EBF1190034129E /* MNAVChapterReader.m */; };
F5F509742CEBF8E7007D6E39 /* Agrume in Frameworks */ = {isa = PBXBuildFile; productRef = F5F509732CEBF8E7007D6E39 /* Agrume */; };
F5F509772CEBF9E3007D6E39 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 460C375526D831E3008B3609 /* Localizable.strings */; };
F5F509782CEBFA71007D6E39 /* NowPlayingPlayerItemViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BDFB53C62362A2570001806E /* NowPlayingPlayerItemViewController.xib */; };
F5F5097A2CEBFCA9007D6E39 /* NowPlayingPlayerItemViewControllerRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5F509792CEBFCA9007D6E39 /* NowPlayingPlayerItemViewControllerRepresentable.swift */; };
Expand Down Expand Up @@ -2059,6 +2059,13 @@
remoteGlobalIDString = 2F90990A2A4F88B00044FC55;
remoteInfo = "Share Extension";
};
9AB645112D51368300A842C8 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = BDBD53E417019B290048C8C5 /* Project object */;
proxyType = 1;
remoteGlobalIDString = F5D5F7782CEBE769001F492D;
remoteInfo = "Pocket Casts App Clip";
};
BD3A21121E6CFC2400F42241 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = BDBD53E417019B290048C8C5 /* Project object */;
Expand Down Expand Up @@ -2116,6 +2123,17 @@
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
9AB645172D51388400A842C8 /* Embed App Clips */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 8;
dstPath = "$(CONTENTS_FOLDER_PATH)/AppClips";
dstSubfolderSpec = 16;
files = (
9AB645182D5138B200A842C8 /* Pocket Casts App Clip.app in Embed App Clips */,
);
name = "Embed App Clips";
runOnlyForDeploymentPostprocessing = 1;
};
BD0CFBE12682C4E600765E33 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
Expand Down Expand Up @@ -4110,7 +4128,6 @@
F5F5096C2CEBF871007D6E39 /* PocketCastsServer in Frameworks */,
F5F508F42CEBE985007D6E39 /* PocketCastsUtils in Frameworks */,
F5F509002CEBEA24007D6E39 /* FirebaseAnalyticsWithoutAdIdSupport in Frameworks */,
F5F509742CEBF8E7007D6E39 /* Agrume in Frameworks */,
F5F509612CEBF6CB007D6E39 /* FirebaseRemoteConfig in Frameworks */,
F5F5096F2CEBF884007D6E39 /* Lottie in Frameworks */,
);
Expand Down Expand Up @@ -8546,6 +8563,7 @@
BD5231EA1E3EDA6A000F0D38 /* Embed App Extensions */,
BDD3018A1EFB9356004A9972 /* Embed Watch Content */,
40BF0B3F241F55FE003E3ABD /* Embed Frameworks */,
9AB645172D51388400A842C8 /* Embed App Clips */,
CD7B4456FFD51509B59727FB /* [CP] Embed Pods Frameworks */,
C716FF45296F2BE3006B787D /* Modify Plist */,
);
Expand All @@ -8561,6 +8579,7 @@
4090975A25235DFC00CED68C /* PBXTargetDependency */,
8B0845922A66C86500742C2F /* PBXTargetDependency */,
8B0845952A66C86D00742C2F /* PBXTargetDependency */,
9AB645122D51368300A842C8 /* PBXTargetDependency */,
);
name = podcasts;
packageProductDependencies = (
Expand Down Expand Up @@ -11085,6 +11104,11 @@
target = 2F90990A2A4F88B00044FC55 /* Share Extension */;
targetProxy = 8B0845942A66C86D00742C2F /* PBXContainerItemProxy */;
};
9AB645122D51368300A842C8 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = F5D5F7782CEBE769001F492D /* Pocket Casts App Clip */;
targetProxy = 9AB645112D51368300A842C8 /* PBXContainerItemProxy */;
};
BD3A21131E6CFC2400F42241 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = BD3A210C1E6CFC2400F42241 /* NotificationExtension */;
Expand Down Expand Up @@ -12978,7 +13002,7 @@
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
Expand Down Expand Up @@ -13032,7 +13056,7 @@
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
Expand Down Expand Up @@ -13088,7 +13112,7 @@
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
Expand Down Expand Up @@ -13143,7 +13167,7 @@
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
Expand Down Expand Up @@ -13588,11 +13612,6 @@
package = BDBEE72B267C845E00BA43FB /* XCRemoteSwiftPackageReference "lottie-ios" */;
productName = Lottie;
};
F5F509732CEBF8E7007D6E39 /* Agrume */ = {
isa = XCSwiftPackageProductDependency;
package = 8B365E4E2B62E82000143DAC /* XCRemoteSwiftPackageReference "Agrume" */;
productName = Agrume;
};
FF2CD57B2B9F4B2D009B58B5 /* PocketCastsDataModel */ = {
isa = XCSwiftPackageProductDependency;
productName = PocketCastsDataModel;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1620"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES"
buildArchitectures = "Automatic">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "F5D5F7782CEBE769001F492D"
BuildableName = "Pocket Casts App Clip.app"
BlueprintName = "Pocket Casts App Clip"
ReferencedContainer = "container:podcasts.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
appClipInvocationURLString = "https://pca.st/c2r28q2u"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "F5D5F7782CEBE769001F492D"
BuildableName = "Pocket Casts App Clip.app"
BlueprintName = "Pocket Casts App Clip"
ReferencedContainer = "container:podcasts.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
appClipInvocationURLString = "https://pca.st/c2r28q2u"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "F5D5F7782CEBE769001F492D"
BuildableName = "Pocket Casts App Clip.app"
BlueprintName = "Pocket Casts App Clip"
ReferencedContainer = "container:podcasts.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
13 changes: 13 additions & 0 deletions podcasts/NowPlayingPlayerItemViewController.swift
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#if !APPCLIP
import Agrume
#endif
import AVKit
import SafariServices
import UIKit
Expand Down Expand Up @@ -37,12 +39,18 @@ class NowPlayingPlayerItemViewController: PlayerItemViewController {

@IBOutlet var episodeName: ThemeableLabel! {
didSet {
#if APPCLIP
episodeName.text = ""
#endif
episodeName.style = .playerContrast01
}
}

@IBOutlet var podcastName: ThemeableLabel! {
didSet {
#if APPCLIP
podcastName.text = ""
#endif
podcastName.style = .playerContrast02
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(podcastNameTapped))
podcastName.addGestureRecognizer(tapGesture)
Expand All @@ -54,6 +62,9 @@ class NowPlayingPlayerItemViewController: PlayerItemViewController {

@IBOutlet var chapterName: ThemeableLabel! {
didSet {
#if APPCLIP
chapterName.text = ""
#endif
chapterName.style = .playerContrast01

let tapGesture = UITapGestureRecognizer(target: self, action: #selector(chapterNameTapped))
Expand Down Expand Up @@ -303,10 +314,12 @@ class NowPlayingPlayerItemViewController: PlayerItemViewController {
}

@objc private func imageTapped() {
#if !APPCLIP
guard let artwork = episodeImage.image else { return }

let agrume = Agrume(image: artwork, background: .blurred(.regular))
agrume.show(from: self)
#endif
}

@objc private func videoTapped() {
Expand Down
8 changes: 6 additions & 2 deletions podcasts/Onboarding/Welcome/WelcomeViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ class WelcomeViewModel: ObservableObject, OnboardingModel {
navigationController?.pushViewController(controller, animated: true)

case .discover:
trackNewsletterOptIn()
track(.welcomeDiscoverTapped)
navigationController?.dismiss(animated: true)
NavigationManager.sharedManager.navigateTo(NavigationManager.discoverPageKey, data: nil)
Expand All @@ -43,19 +44,22 @@ class WelcomeViewModel: ObservableObject, OnboardingModel {

func doneTapped() {
saveNewsletterOptIn()
trackNewsletterOptIn()
track(.welcomeDismissed)
navigationController?.dismiss(animated: true)
}

private func saveNewsletterOptIn() {
ServerSettings.setMarketingOptIn(newsletterOptIn)
}

private func trackNewsletterOptIn() {
let source: String
switch displayType {
case .newAccount: source = "welcome_new_account"
case .plus: source = "welcome_plus"
}

Analytics.track(.newsletterOptInChanged, properties: ["enabled": newsletterOptIn, "source": source])
ServerSettings.setMarketingOptIn(newsletterOptIn)
}

// MARK: - Configuration
Expand Down
4 changes: 2 additions & 2 deletions podcasts/ca.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -730,7 +730,7 @@
<key>download_all</key>
<string>Descarregar-ho tot</string>
<key>download_data_warning</key>
<string>La descàrrega emprarà dades mòbils.</string>
<string>La descàrrega consumirà dades mòbils.</string>
<key>download_episode_plural_format</key>
<string>Descarregar %1$@ episodis</string>
<key>download_episode_singular</key>
Expand Down Expand Up @@ -1997,7 +1997,7 @@ Si vols noves idees, ves a la pestanya Descobrir.</string>
<key>podcast_stream_confirmation</key>
<string>Reprodueix-ho de totes maneres</string>
<key>podcast_stream_data_warning</key>
<string>La reproducció d'aquest episodi emprarà dades</string>
<string>La reproducció d'aquest episodi consumirà dades</string>
<key>podcast_this_month</key>
<string>Aquest mes</string>
<key>podcast_time_left</key>
Expand Down
2 changes: 2 additions & 0 deletions podcasts/de.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -1334,6 +1334,8 @@ Podcasts mit</string>
<string>Weitere Informationen</string>
<key>listening_history</key>
<string>Hörverlauf</string>
<key>listening_history_remove</key>
<string>Aus dem Verlauf entfernen</string>
<key>listening_history_search_no_episodes_text</key>
<string>Wir konnten keine Folge für diese Suche finden. Versuche es mit einem anderen Stichwort.</string>
<key>listening_history_search_no_episodes_title</key>
Expand Down
2 changes: 2 additions & 0 deletions podcasts/es-MX.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -1336,6 +1336,8 @@ pódcast contigo</string>
<string>Más información</string>
<key>listening_history</key>
<string>Historial de escuchados</string>
<key>listening_history_remove</key>
<string>Eliminar del historial</string>
<key>listening_history_search_no_episodes_text</key>
<string>No hemos podido encontrar ningún episodio para esa búsqueda. Prueba con otra palabra clave.</string>
<key>listening_history_search_no_episodes_title</key>
Expand Down
2 changes: 2 additions & 0 deletions podcasts/es.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -1336,6 +1336,8 @@ pódcast contigo</string>
<string>Más información</string>
<key>listening_history</key>
<string>Historial de elementos escuchados</string>
<key>listening_history_remove</key>
<string>Eliminar del historial</string>
<key>listening_history_search_no_episodes_text</key>
<string>No hemos podido encontrar ningún episodio para esa búsqueda. Prueba con otra palabra clave.</string>
<key>listening_history_search_no_episodes_title</key>
Expand Down
2 changes: 2 additions & 0 deletions podcasts/fr-CA.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -1336,6 +1336,8 @@ podcasts partout avec</string>
<string>En savoir plus</string>
<key>listening_history</key>
<string>Historique d’écoute</string>
<key>listening_history_remove</key>
<string>Retirer de l’historique</string>
<key>listening_history_search_no_episodes_text</key>
<string>Nous n’avons trouvé aucun épisode correspondant à cette recherche. Essayez un autre mot-clé.</string>
<key>listening_history_search_no_episodes_title</key>
Expand Down
2 changes: 2 additions & 0 deletions podcasts/fr.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -1336,6 +1336,8 @@ podcasts partout avec</string>
<string>En savoir plus</string>
<key>listening_history</key>
<string>Historique d’écoute</string>
<key>listening_history_remove</key>
<string>Retirer de l’historique</string>
<key>listening_history_search_no_episodes_text</key>
<string>Nous n’avons trouvé aucun épisode correspondant à cette recherche. Essayez un autre mot-clé.</string>
<key>listening_history_search_no_episodes_title</key>
Expand Down
2 changes: 2 additions & 0 deletions podcasts/it.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -1336,6 +1336,8 @@ pocast con te</string>
<string>Scopri di più</string>
<key>listening_history</key>
<string>Cronologia di ascolto</string>
<key>listening_history_remove</key>
<string>Rimuovi dalla cronologia</string>
<key>listening_history_search_no_episodes_text</key>
<string>Non abbiamo trovato alcun episodio per la ricerca. Prova un'altra parola chiave.</string>
<key>listening_history_search_no_episodes_title</key>
Expand Down
2 changes: 2 additions & 0 deletions podcasts/ja.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -1336,6 +1336,8 @@ Pocket Casts で共有すればここに表示されるようになります</st
<string>もっと詳しく知る</string>
<key>listening_history</key>
<string>聴取履歴</string>
<key>listening_history_remove</key>
<string>履歴から削除</string>
<key>listening_history_search_no_episodes_text</key>
<string>その検索に該当するエピソードは見つかりませんでした。 別のキーワードを試してください。</string>
<key>listening_history_search_no_episodes_title</key>
Expand Down
2 changes: 2 additions & 0 deletions podcasts/nl.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -1336,6 +1336,8 @@ podcasts mee</string>
<string>Meer weten</string>
<key>listening_history</key>
<string>Luistergeschiedenis</string>
<key>listening_history_remove</key>
<string>Verwijderen uit geschiedenis</string>
<key>listening_history_search_no_episodes_text</key>
<string>We kunnen geen aflevering vinden voor die zoekopdracht. Probeer een ander trefwoord.</string>
<key>listening_history_search_no_episodes_title</key>
Expand Down
2 changes: 2 additions & 0 deletions podcasts/pt-BR.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -1336,6 +1336,8 @@ podcasts com você</string>
<string>Saiba mais</string>
<key>listening_history</key>
<string>Histórico de escuta</string>
<key>listening_history_remove</key>
<string>Remover do histórico</string>
<key>listening_history_search_no_episodes_text</key>
<string>Não encontramos nenhum episódio para essa pesquisa. Tente outra palavra-chave.</string>
<key>listening_history_search_no_episodes_title</key>
Expand Down
Loading

0 comments on commit 3baf5a1

Please sign in to comment.