diff --git a/WordPress/Classes/Utility/App Configuration/WidgetConfiguration.swift b/WordPress/Classes/Utility/App Configuration/WidgetConfiguration.swift index 4b39f088c7e1..329f64b80a01 100644 --- a/WordPress/Classes/Utility/App Configuration/WidgetConfiguration.swift +++ b/WordPress/Classes/Utility/App Configuration/WidgetConfiguration.swift @@ -28,9 +28,22 @@ import Foundation /// Lock Screen @objc static let lockScreenTodayViewsKind = "WordPressLockScreenWidgetTodayViews" - @objc static let lockScreenTodayLikesCommentsKind = "WordPressLockScreenWidgetTodayLikesComments" @objc static let lockScreenTodayViewsProperties = "WordPressLockScreenWidgetTodayViewsProperties" + + @objc static let lockScreenTodayLikesCommentsKind = "WordPressLockScreenWidgetTodayLikesComments" @objc static let lockScreenTodayLikesCommentsProperties = "WordPressLockScreenWidgetTodayLikesCommentsProperties" + + @objc static let lockScreenTodayViewsVisitorsKind = "WordPressLockScreenWidgetTodayViewsVisitors" + @objc static let lockScreenTodayViewsVisitorsProperties = "WordPressLockScreenWidgetTodayViewsVisitorsProperties" + + @objc static let lockScreenAllTimeViewsKind = "WordPressLockScreenWidgetAllTimeViews" + @objc static let lockScreenAllTimeViewsProperties = "WordPressLockScreenWidgetAllTimeViewsProperties" + + @objc static let lockScreenAllTimeViewsVisitorsKind = "WordPressLockScreenWidgetAllTimeViewsVisitors" + @objc static let lockScreenAllTimeViewsVisitorsProperties = "WordPressLockScreenWidgetAllTimeViewsVisitorsProperties" + + @objc static let lockScreenAllTimePostsBestViewsKind = "WordPressLockScreenWidgetAllTimePostsBestViews" + @objc static let lockScreenAllTimePostsBestViewsProperties = "WordPressLockScreenWidgetAllTimeBestViewsProperties" } // iOS13 Stats Today Widgets diff --git a/WordPress/Jetpack/WidgetConfiguration.swift b/WordPress/Jetpack/WidgetConfiguration.swift index a647b4ac3982..cccb79222158 100644 --- a/WordPress/Jetpack/WidgetConfiguration.swift +++ b/WordPress/Jetpack/WidgetConfiguration.swift @@ -28,9 +28,22 @@ import Foundation /// Lock Screen @objc static let lockScreenTodayViewsKind = "JetpackLockScreenWidgetTodayViews" - @objc static let lockScreenTodayLikesCommentsKind = "JetpackLockScreenWidgetTodayLikesComments" @objc static let lockScreenTodayViewsProperties = "JetpackLockScreenWidgetTodayViewsProperties" + + @objc static let lockScreenTodayLikesCommentsKind = "JetpackLockScreenWidgetTodayLikesComments" @objc static let lockScreenTodayLikesCommentsProperties = "JetpackLockScreenWidgetTodayLikesCommentsProperties" + + @objc static let lockScreenTodayViewsVisitorsKind = "JetpackLockScreenWidgetTodayViewsVisitors" + @objc static let lockScreenTodayViewsVisitorsProperties = "JetpackLockScreenWidgetTodayViewsVisitorsProperties" + + @objc static let lockScreenAllTimeViewsKind = "JetpackLockScreenWidgetAllTimeViews" + @objc static let lockScreenAllTimeViewsProperties = "JetpackLockScreenWidgetAllTimeViewsProperties" + + @objc static let lockScreenAllTimeViewsVisitorsKind = "JetpackLockScreenWidgetAllTimeViewsVisitors" + @objc static let lockScreenAllTimeViewsVisitorsProperties = "JetpackLockScreenWidgetAllTimeViewsVisitorsProperties" + + @objc static let lockScreenAllTimePostsBestViewsKind = "JetpackLockScreenWidgetAllTimePostsBestViews" + @objc static let lockScreenAllTimePostsBestViewsProperties = "JetpackLockScreenWidgetAllTimeBestViewsProperties" } diff --git a/WordPress/WordPress.xcodeproj/project.pbxproj b/WordPress/WordPress.xcodeproj/project.pbxproj index 52d928f66ac5..0ec6264da5a4 100644 --- a/WordPress/WordPress.xcodeproj/project.pbxproj +++ b/WordPress/WordPress.xcodeproj/project.pbxproj @@ -225,6 +225,14 @@ 01CE5015290A890F00A9C2E0 /* TracksConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01CE5010290A890300A9C2E0 /* TracksConfiguration.swift */; }; 01D2FF5E2AA733690038E040 /* LockScreenFieldView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01D2FF5D2AA733690038E040 /* LockScreenFieldView.swift */; }; 01D2FF5F2AA733690038E040 /* LockScreenFieldView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01D2FF5D2AA733690038E040 /* LockScreenFieldView.swift */; }; + 01D2FF612AA77C5F0038E040 /* LockScreenAllTimeViewsStatWidgetConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01D2FF602AA77C5F0038E040 /* LockScreenAllTimeViewsStatWidgetConfig.swift */; }; + 01D2FF622AA77C5F0038E040 /* LockScreenAllTimeViewsStatWidgetConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01D2FF602AA77C5F0038E040 /* LockScreenAllTimeViewsStatWidgetConfig.swift */; }; + 01D2FF642AA77F790038E040 /* LockScreenTodayViewsVisitorsStatWidgetConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01D2FF632AA77F790038E040 /* LockScreenTodayViewsVisitorsStatWidgetConfig.swift */; }; + 01D2FF652AA77F790038E040 /* LockScreenTodayViewsVisitorsStatWidgetConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01D2FF632AA77F790038E040 /* LockScreenTodayViewsVisitorsStatWidgetConfig.swift */; }; + 01D2FF672AA780DC0038E040 /* LockScreenAllTimeViewsVisitorsStatWidgetConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01D2FF662AA780DC0038E040 /* LockScreenAllTimeViewsVisitorsStatWidgetConfig.swift */; }; + 01D2FF682AA780DC0038E040 /* LockScreenAllTimeViewsVisitorsStatWidgetConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01D2FF662AA780DC0038E040 /* LockScreenAllTimeViewsVisitorsStatWidgetConfig.swift */; }; + 01D2FF6A2AA782720038E040 /* LockScreenAllTimePostsBestViewsStatWidgetConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01D2FF692AA782720038E040 /* LockScreenAllTimePostsBestViewsStatWidgetConfig.swift */; }; + 01D2FF6B2AA782720038E040 /* LockScreenAllTimePostsBestViewsStatWidgetConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01D2FF692AA782720038E040 /* LockScreenAllTimePostsBestViewsStatWidgetConfig.swift */; }; 01DBFD8729BDCBF200F3720F /* JetpackNativeConnectionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01DBFD8629BDCBF200F3720F /* JetpackNativeConnectionService.swift */; }; 01DBFD8829BDCBF200F3720F /* JetpackNativeConnectionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01DBFD8629BDCBF200F3720F /* JetpackNativeConnectionService.swift */; }; 01E61E5A29F03DEC002E544E /* DashboardDomainsCardSearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01E61E5929F03DEC002E544E /* DashboardDomainsCardSearchView.swift */; }; @@ -5950,6 +5958,10 @@ 01CE5006290A889F00A9C2E0 /* TracksConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TracksConfiguration.swift; sourceTree = ""; }; 01CE5010290A890300A9C2E0 /* TracksConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TracksConfiguration.swift; sourceTree = ""; }; 01D2FF5D2AA733690038E040 /* LockScreenFieldView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LockScreenFieldView.swift; sourceTree = ""; }; + 01D2FF602AA77C5F0038E040 /* LockScreenAllTimeViewsStatWidgetConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LockScreenAllTimeViewsStatWidgetConfig.swift; sourceTree = ""; }; + 01D2FF632AA77F790038E040 /* LockScreenTodayViewsVisitorsStatWidgetConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LockScreenTodayViewsVisitorsStatWidgetConfig.swift; sourceTree = ""; }; + 01D2FF662AA780DC0038E040 /* LockScreenAllTimeViewsVisitorsStatWidgetConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LockScreenAllTimeViewsVisitorsStatWidgetConfig.swift; sourceTree = ""; }; + 01D2FF692AA782720038E040 /* LockScreenAllTimePostsBestViewsStatWidgetConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LockScreenAllTimePostsBestViewsStatWidgetConfig.swift; sourceTree = ""; }; 01DBFD8629BDCBF200F3720F /* JetpackNativeConnectionService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JetpackNativeConnectionService.swift; sourceTree = ""; }; 01E61E5929F03DEC002E544E /* DashboardDomainsCardSearchView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashboardDomainsCardSearchView.swift; sourceTree = ""; }; 01E78D1C296EA54F00FB6863 /* StatsPeriodHelperTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatsPeriodHelperTests.swift; sourceTree = ""; }; @@ -16266,6 +16278,10 @@ C9FE383F29C2A3D200D39841 /* LockScreenStatsWidgetConfig.swift */, C9FE383C29C2A3D100D39841 /* LockScreenTodayViewsStatWidgetConfig.swift */, 0188FE4A2AA62F800093EDA5 /* LockScreenTodayLikesCommentsStatWidgetConfig.swift */, + 01D2FF632AA77F790038E040 /* LockScreenTodayViewsVisitorsStatWidgetConfig.swift */, + 01D2FF602AA77C5F0038E040 /* LockScreenAllTimeViewsStatWidgetConfig.swift */, + 01D2FF662AA780DC0038E040 /* LockScreenAllTimeViewsVisitorsStatWidgetConfig.swift */, + 01D2FF692AA782720038E040 /* LockScreenAllTimePostsBestViewsStatWidgetConfig.swift */, ); path = Configs; sourceTree = ""; @@ -21063,8 +21079,11 @@ 0107E0BB28F97D5000DE87DB /* StatsWidgetsService.swift in Sources */, C9B477B729CD2EF7008CBF49 /* LockScreenUnconfiguredView.swift in Sources */, 0107E0BC28F97D5000DE87DB /* StatsWidgetsView.swift in Sources */, + 01D2FF6B2AA782720038E040 /* LockScreenAllTimePostsBestViewsStatWidgetConfig.swift in Sources */, 0107E0BD28F97D5000DE87DB /* AppLocalizedString.swift in Sources */, + 01D2FF682AA780DC0038E040 /* LockScreenAllTimeViewsVisitorsStatWidgetConfig.swift in Sources */, 0107E0BE28F97D5000DE87DB /* MultiStatsView.swift in Sources */, + 01D2FF622AA77C5F0038E040 /* LockScreenAllTimeViewsStatWidgetConfig.swift in Sources */, 0107E0BF28F97D5000DE87DB /* FeatureFlagOverrideStore.swift in Sources */, 0107E11528FD7FE500DE87DB /* AppConfiguration.swift in Sources */, 0107E0C028F97D5000DE87DB /* WordPressHomeWidgetToday.swift in Sources */, @@ -21100,6 +21119,7 @@ 0107E1852900059300DE87DB /* LocalizationConfiguration.swift in Sources */, 0107E0D328F97D5000DE87DB /* Tracks+StatsWidgets.swift in Sources */, 0107E0D428F97D5000DE87DB /* HomeWidgetData.swift in Sources */, + 01D2FF652AA77F790038E040 /* LockScreenTodayViewsVisitorsStatWidgetConfig.swift in Sources */, 0107E0D528F97D5000DE87DB /* HomeWidgetTodayData.swift in Sources */, 0107E0D628F97D5000DE87DB /* AllTimeWidgetStats.swift in Sources */, 0107E0D728F97D5000DE87DB /* Sites.intentdefinition in Sources */, @@ -23003,8 +23023,11 @@ 3F2F0C16256C6B2C003351C7 /* StatsWidgetsService.swift in Sources */, C9B477B629CD2EF7008CBF49 /* LockScreenUnconfiguredView.swift in Sources */, 3F526D572539FAC60069706C /* StatsWidgetsView.swift in Sources */, + 01D2FF6A2AA782720038E040 /* LockScreenAllTimePostsBestViewsStatWidgetConfig.swift in Sources */, 3F2656A125AF4DFA0073A832 /* AppLocalizedString.swift in Sources */, + 01D2FF672AA780DC0038E040 /* LockScreenAllTimeViewsVisitorsStatWidgetConfig.swift in Sources */, 3F568A0025420DE80048A9E4 /* MultiStatsView.swift in Sources */, + 01D2FF612AA77C5F0038E040 /* LockScreenAllTimeViewsStatWidgetConfig.swift in Sources */, 3F6BC05C25B24773007369D3 /* FeatureFlagOverrideStore.swift in Sources */, 3FD675EA25C87A25009AB3C1 /* WordPressHomeWidgetToday.swift in Sources */, 3F568A2F254216550048A9E4 /* FlexibleCard.swift in Sources */, @@ -23040,6 +23063,7 @@ 0107E1872900065500DE87DB /* LocalizationConfiguration.swift in Sources */, 98390AC3254C984700868F0A /* Tracks+StatsWidgets.swift in Sources */, 3FA53ED62565860900F4D9A2 /* HomeWidgetData.swift in Sources */, + 01D2FF642AA77F790038E040 /* LockScreenTodayViewsVisitorsStatWidgetConfig.swift in Sources */, 3FB34ACB25672A90001A74A6 /* HomeWidgetTodayData.swift in Sources */, 3F5C863B25C9EA8200BABE64 /* AllTimeWidgetStats.swift in Sources */, 3FD675D925C87A15009AB3C1 /* Sites.intentdefinition in Sources */, diff --git a/WordPress/WordPressStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimePostsBestViewsStatWidgetConfig.swift b/WordPress/WordPressStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimePostsBestViewsStatWidgetConfig.swift new file mode 100644 index 000000000000..29b1beca8bad --- /dev/null +++ b/WordPress/WordPressStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimePostsBestViewsStatWidgetConfig.swift @@ -0,0 +1,56 @@ +import WidgetKit + +@available(iOS 16.0, *) +struct LockScreenAllTimePostsBestViewsStatWidgetConfig: LockScreenStatsWidgetConfig { + typealias WidgetData = HomeWidgetAllTimeData + typealias ViewProvider = LockScreenMultiStatWidgetViewProvider + + var supportFamilies: [WidgetFamily] { + guard AppConfiguration.isJetpack, FeatureFlag.lockScreenWidget.enabled else { + return [] + } + return [.accessoryRectangular] + } + + var displayName: String { + LocalizableStrings.allTimePostMostViewsWidgetPreviewTitle + } + + var description: String { + LocalizableStrings.allTimePreviewDescription + } + + var kind: String { + AppConfiguration.Widget.Stats.lockScreenAllTimePostsBestViewsKind + } + + var countKey: String { + AppConfiguration.Widget.Stats.lockScreenAllTimePostsBestViewsProperties + } + + var placeholderContent: HomeWidgetAllTimeData { + HomeWidgetAllTimeData( + siteID: 0, + siteName: "My WordPress Site", + url: "", + timeZone: TimeZone.current, + date: Date(), + stats: AllTimeWidgetStats( + views: 649, + visitors: 572, + posts: 5, + bestViews: 10 + ) + ) + } + + var viewProvider: ViewProvider { + LockScreenMultiStatWidgetViewProvider( + widgetKind: .today, + topTitle: LocalizableStrings.postsTitle, + topValue: \.stats.posts, + bottomTitle: LocalizableStrings.bestViewsShortTitle, + bottomValue: \.stats.bestViews + ) + } +} diff --git a/WordPress/WordPressStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimeViewsStatWidgetConfig.swift b/WordPress/WordPressStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimeViewsStatWidgetConfig.swift new file mode 100644 index 000000000000..e2ea1dedee90 --- /dev/null +++ b/WordPress/WordPressStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimeViewsStatWidgetConfig.swift @@ -0,0 +1,54 @@ +import WidgetKit + +@available(iOS 16.0, *) +struct LockScreenAllTimeViewsStatWidgetConfig: LockScreenStatsWidgetConfig { + typealias WidgetData = HomeWidgetAllTimeData + typealias ViewProvider = LockScreenSingleStatWidgetViewProvider + + var supportFamilies: [WidgetFamily] { + guard AppConfiguration.isJetpack, FeatureFlag.lockScreenWidget.enabled else { + return [] + } + return [.accessoryRectangular] + } + + var displayName: String { + LocalizableStrings.allTimeViewsWidgetPreviewTitle + } + + var description: String { + LocalizableStrings.allTimePreviewDescription + } + + var kind: String { + AppConfiguration.Widget.Stats.lockScreenAllTimeViewsKind + } + + var countKey: String { + AppConfiguration.Widget.Stats.lockScreenAllTimeViewsProperties + } + + var placeholderContent: HomeWidgetAllTimeData { + HomeWidgetAllTimeData( + siteID: 0, + siteName: "My WordPress Site", + url: "", + timeZone: TimeZone.current, + date: Date(), + stats: AllTimeWidgetStats( + views: 649, + visitors: 572, + posts: 5, + bestViews: 10 + ) + ) + } + + var viewProvider: ViewProvider { + LockScreenSingleStatWidgetViewProvider( + title: LocalizableStrings.allTimeViewsTitle, + value: \.stats.views, + widgetKind: .allTime + ) + } +} diff --git a/WordPress/WordPressStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimeViewsVisitorsStatWidgetConfig.swift b/WordPress/WordPressStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimeViewsVisitorsStatWidgetConfig.swift new file mode 100644 index 000000000000..f2c7545d8512 --- /dev/null +++ b/WordPress/WordPressStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimeViewsVisitorsStatWidgetConfig.swift @@ -0,0 +1,56 @@ +import WidgetKit + +@available(iOS 16.0, *) +struct LockScreenAllTimeViewsVisitorsStatWidgetConfig: LockScreenStatsWidgetConfig { + typealias WidgetData = HomeWidgetAllTimeData + typealias ViewProvider = LockScreenMultiStatWidgetViewProvider + + var supportFamilies: [WidgetFamily] { + guard AppConfiguration.isJetpack, FeatureFlag.lockScreenWidget.enabled else { + return [] + } + return [.accessoryRectangular] + } + + var displayName: String { + LocalizableStrings.allTimeViewsVisitorsWidgetPreviewTitle + } + + var description: String { + LocalizableStrings.allTimePreviewDescription + } + + var kind: String { + AppConfiguration.Widget.Stats.lockScreenAllTimeViewsVisitorsKind + } + + var countKey: String { + AppConfiguration.Widget.Stats.lockScreenAllTimeViewsVisitorsProperties + } + + var placeholderContent: HomeWidgetAllTimeData { + HomeWidgetAllTimeData( + siteID: 0, + siteName: "My WordPress Site", + url: "", + timeZone: TimeZone.current, + date: Date(), + stats: AllTimeWidgetStats( + views: 649, + visitors: 572, + posts: 5, + bestViews: 10 + ) + ) + } + + var viewProvider: ViewProvider { + LockScreenMultiStatWidgetViewProvider( + widgetKind: .today, + topTitle: LocalizableStrings.viewsTitle, + topValue: \.stats.views, + bottomTitle: LocalizableStrings.visitorsTitle, + bottomValue: \.stats.visitors + ) + } +} diff --git a/WordPress/WordPressStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayLikesCommentsStatWidgetConfig.swift b/WordPress/WordPressStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayLikesCommentsStatWidgetConfig.swift index 26552c1dc001..64c4d26e7dae 100644 --- a/WordPress/WordPressStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayLikesCommentsStatWidgetConfig.swift +++ b/WordPress/WordPressStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayLikesCommentsStatWidgetConfig.swift @@ -13,7 +13,7 @@ struct LockScreenTodayLikesCommentsStatWidgetConfig: LockScreenStatsWidgetConfig } var displayName: String { - LocalizableStrings.todayWidgetTitle + LocalizableStrings.todayLikesCommentsWidgetPreviewTitle } var description: String { diff --git a/WordPress/WordPressStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayViewsStatWidgetConfig.swift b/WordPress/WordPressStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayViewsStatWidgetConfig.swift index fec826e19422..c3807b61b1de 100644 --- a/WordPress/WordPressStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayViewsStatWidgetConfig.swift +++ b/WordPress/WordPressStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayViewsStatWidgetConfig.swift @@ -13,7 +13,7 @@ struct LockScreenTodayViewsStatWidgetConfig: LockScreenStatsWidgetConfig { } var displayName: String { - LocalizableStrings.todayWidgetTitle + LocalizableStrings.todayViewsWidgetPreviewTitle } var description: String { diff --git a/WordPress/WordPressStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayViewsVisitorsStatWidgetConfig.swift b/WordPress/WordPressStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayViewsVisitorsStatWidgetConfig.swift new file mode 100644 index 000000000000..7222e839216b --- /dev/null +++ b/WordPress/WordPressStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayViewsVisitorsStatWidgetConfig.swift @@ -0,0 +1,56 @@ +import WidgetKit + +@available(iOS 16.0, *) +struct LockScreenTodayViewsVisitorsStatWidgetConfig: LockScreenStatsWidgetConfig { + typealias WidgetData = HomeWidgetTodayData + typealias ViewProvider = LockScreenMultiStatWidgetViewProvider + + var supportFamilies: [WidgetFamily] { + guard AppConfiguration.isJetpack, FeatureFlag.lockScreenWidget.enabled else { + return [] + } + return [.accessoryRectangular] + } + + var displayName: String { + LocalizableStrings.todayViewsVisitorsWidgetPreviewTitle + } + + var description: String { + LocalizableStrings.todayPreviewDescription + } + + var kind: String { + AppConfiguration.Widget.Stats.lockScreenTodayViewsVisitorsKind + } + + var countKey: String { + AppConfiguration.Widget.Stats.lockScreenTodayViewsVisitorsProperties + } + + var placeholderContent: HomeWidgetTodayData { + HomeWidgetTodayData( + siteID: 0, + siteName: "My WordPress Site", + url: "", + timeZone: TimeZone.current, + date: Date(), + stats: TodayWidgetStats( + views: 649, + visitors: 572, + likes: 16, + comments: 8 + ) + ) + } + + var viewProvider: ViewProvider { + LockScreenMultiStatWidgetViewProvider( + widgetKind: .today, + topTitle: LocalizableStrings.viewsTitle, + topValue: \.stats.views, + bottomTitle: LocalizableStrings.visitorsTitle, + bottomValue: \.stats.visitors + ) + } +} diff --git a/WordPress/WordPressStatsWidgets/LockScreenWidgets/Views/LockScreenFieldView.swift b/WordPress/WordPressStatsWidgets/LockScreenWidgets/Views/LockScreenFieldView.swift index fe6302a6a339..87c12d10f233 100644 --- a/WordPress/WordPressStatsWidgets/LockScreenWidgets/Views/LockScreenFieldView.swift +++ b/WordPress/WordPressStatsWidgets/LockScreenWidgets/Views/LockScreenFieldView.swift @@ -36,6 +36,7 @@ struct LockScreenFieldView: View { Text(title) .frame(maxWidth: .infinity, alignment: .leading) .font(.system(size: 10)) + .minimumScaleFactor(0.9) .allowsTightening(true) .lineLimit(1) } diff --git a/WordPress/WordPressStatsWidgets/LockScreenWidgets/Views/LockScreenMultiStatView.swift b/WordPress/WordPressStatsWidgets/LockScreenWidgets/Views/LockScreenMultiStatView.swift index 544fa7102514..37a6a42a321a 100644 --- a/WordPress/WordPressStatsWidgets/LockScreenWidgets/Views/LockScreenMultiStatView.swift +++ b/WordPress/WordPressStatsWidgets/LockScreenWidgets/Views/LockScreenMultiStatView.swift @@ -80,7 +80,7 @@ struct LockScreenMultiStatView_Previews: PreviewProvider { siteName: "My WordPress Site", updatedTime: Date(), primaryField: .init(title: "Views", value: 15), - secondaryField: .init(title: "Visitors", value: 5) + secondaryField: .init(title: "Most Views", value: 5) ), LockScreenMultiStatViewModel( siteName: "My WordPress Site with an extremely long name", diff --git a/WordPress/WordPressStatsWidgets/StatsWidgets.swift b/WordPress/WordPressStatsWidgets/StatsWidgets.swift index 00af4702f2e3..7b6297210f70 100644 --- a/WordPress/WordPressStatsWidgets/StatsWidgets.swift +++ b/WordPress/WordPressStatsWidgets/StatsWidgets.swift @@ -9,7 +9,11 @@ struct WordPressStatsWidgets: WidgetBundle { WordPressHomeWidgetAllTime() if #available(iOS 16.0, *) { LockScreenStatsWidget(config: LockScreenTodayViewsStatWidgetConfig()) + LockScreenStatsWidget(config: LockScreenTodayViewsVisitorsStatWidgetConfig()) LockScreenStatsWidget(config: LockScreenTodayLikesCommentsStatWidgetConfig()) + LockScreenStatsWidget(config: LockScreenAllTimeViewsStatWidgetConfig()) + LockScreenStatsWidget(config: LockScreenAllTimeViewsVisitorsStatWidgetConfig()) + LockScreenStatsWidget(config: LockScreenAllTimePostsBestViewsStatWidgetConfig()) } } } diff --git a/WordPress/WordPressStatsWidgets/Views/Localization/LocalizableStrings.swift b/WordPress/WordPressStatsWidgets/Views/Localization/LocalizableStrings.swift index 719250f13ab5..5b3159bb087f 100644 --- a/WordPress/WordPressStatsWidgets/Views/Localization/LocalizableStrings.swift +++ b/WordPress/WordPressStatsWidgets/Views/Localization/LocalizableStrings.swift @@ -17,10 +17,33 @@ enum LocalizableStrings { comment: "Title of this week widget") // Lock Screen Widgets title + static let todayViewsWidgetPreviewTitle = AppLocalizedString("widget.todayViews.previewTitle", + value: "Today's Views", + comment: "Preview title of today's views widget") + static let todayViewsVisitorsWidgetPreviewTitle = AppLocalizedString("widget.todayViewsVisitors.previewTitle", + value: "Today's Views & Visitors", + comment: "Preview title of today's views and visitors widget") + static let todayLikesCommentsWidgetPreviewTitle = AppLocalizedString("widget.todayLikesComments.previewTitle", + value: "Today's Likes & Comments", + comment: "Preview title of today's likes and commnets widget") + static let allTimeViewsWidgetPreviewTitle = AppLocalizedString("widget.allTimeViews.previewTitle", + value: "All-Time Views", + comment: "Preview title of all-time views widget") + static let allTimeViewsVisitorsWidgetPreviewTitle = AppLocalizedString("widget.allTimeViewsVisitors.previewTitle", + value: "All-Time Views & Visitors", + comment: "Preview title of all-time views and visitors widget") + static let allTimePostMostViewsWidgetPreviewTitle = AppLocalizedString("widget.allTimePostViews.previewTitle", + value: "All-Time Posts & Most Views", + comment: "Preview title of all-time posts and most views widget") + static let viewsInTodayTitle = AppLocalizedString("widget.lockscreen.todayview.label", value: "Views Today", comment: "Title of the one-liner information consist of views field and today date range in lock screen today views widget") + static let allTimeViewsTitle = AppLocalizedString("widget.lockscreen.alltimeview.label", + value: "All-Time Views", + comment: "Title of the one-liner information consist of views field and all time date range in lock screen all time views widget") + // Widgets content static let viewsTitle = AppLocalizedString("widget.today.views.label", value: "Views", @@ -45,6 +68,10 @@ enum LocalizableStrings { static let bestViewsTitle = AppLocalizedString("widget.alltime.bestviews.label", value: "Best views ever", comment: "Title of best views ever label in all time widget") + + static let bestViewsShortTitle = AppLocalizedString("widget.alltime.bestviewsshort.label", + value: "Most Views", + comment: "Title of the label which displays the number of the most daily views the site has ever had. Keep the translation as short as possible.") // Unconfigured view static let unconfiguredViewTodayTitle = AppLocalizedString("widget.today.unconfigured.view.title", value: "Log in to WordPress to see today's stats.",