From ff44fd5d7078465d555e7229c766412cf55d4bda Mon Sep 17 00:00:00 2001 From: Povilas Staskus Date: Fri, 8 Sep 2023 14:42:05 +0300 Subject: [PATCH 1/6] Group widget kind constants into enum Grouping into enum allows to switch on enum and ensure compiler notifies about any places that need to be updated --- .../Widgets/WidgetCenter+JetpackWidgets.swift | 18 ++++----- WordPress/Jetpack/WidgetConfiguration.swift | 39 +++++++------------ ...llTimePostsBestViewsStatWidgetConfig.swift | 4 +- ...ckScreenAllTimeViewsStatWidgetConfig.swift | 4 +- ...AllTimeViewsVisitorsStatWidgetConfig.swift | 4 +- ...enTodayLikesCommentsStatWidgetConfig.swift | 4 +- ...LockScreenTodayViewsStatWidgetConfig.swift | 4 +- ...enTodayViewsVisitorsStatWidgetConfig.swift | 4 +- .../Tracks/Tracks+StatsWidgets.swift | 8 ++-- .../Widgets/HomeWidgetAllTime.swift | 6 +-- .../Widgets/HomeWidgetThisWeek.swift | 6 +-- .../Widgets/HomeWidgetToday.swift | 6 +-- 12 files changed, 49 insertions(+), 58 deletions(-) diff --git a/WordPress/Classes/ViewRelated/Widgets/WidgetCenter+JetpackWidgets.swift b/WordPress/Classes/ViewRelated/Widgets/WidgetCenter+JetpackWidgets.swift index 7766ddf0d3ca..325971ef7b35 100644 --- a/WordPress/Classes/ViewRelated/Widgets/WidgetCenter+JetpackWidgets.swift +++ b/WordPress/Classes/ViewRelated/Widgets/WidgetCenter+JetpackWidgets.swift @@ -3,20 +3,20 @@ import WidgetKit extension WidgetCenter { func reloadTodayTimelines() { - WidgetCenter.shared.reloadTimelines(ofKind: AppConfiguration.Widget.Stats.todayKind) - WidgetCenter.shared.reloadTimelines(ofKind: AppConfiguration.Widget.Stats.lockScreenTodayViewsKind) - WidgetCenter.shared.reloadTimelines(ofKind: AppConfiguration.Widget.Stats.lockScreenTodayLikesCommentsKind) - WidgetCenter.shared.reloadTimelines(ofKind: AppConfiguration.Widget.Stats.lockScreenTodayViewsVisitorsKind) + WidgetCenter.shared.reloadTimelines(ofKind: AppConfiguration.Widget.Stats.Kind.homeToday.rawValue) + WidgetCenter.shared.reloadTimelines(ofKind: AppConfiguration.Widget.Stats.Kind.lockScreenTodayViews.rawValue) + WidgetCenter.shared.reloadTimelines(ofKind: AppConfiguration.Widget.Stats.Kind.lockScreenTodayLikesComments.rawValue) + WidgetCenter.shared.reloadTimelines(ofKind: AppConfiguration.Widget.Stats.Kind.lockScreenTodayViewsVisitors.rawValue) } func reloadThisWeekTimelines() { - WidgetCenter.shared.reloadTimelines(ofKind: AppConfiguration.Widget.Stats.thisWeekKind) + WidgetCenter.shared.reloadTimelines(ofKind: AppConfiguration.Widget.Stats.Kind.homeThisWeek.rawValue) } func reloadAllTimeTimelines() { - WidgetCenter.shared.reloadTimelines(ofKind: AppConfiguration.Widget.Stats.allTimeKind) - WidgetCenter.shared.reloadTimelines(ofKind: AppConfiguration.Widget.Stats.lockScreenAllTimeViewsKind) - WidgetCenter.shared.reloadTimelines(ofKind: AppConfiguration.Widget.Stats.lockScreenAllTimeViewsVisitorsKind) - WidgetCenter.shared.reloadTimelines(ofKind: AppConfiguration.Widget.Stats.lockScreenAllTimePostsBestViewsKind) + WidgetCenter.shared.reloadTimelines(ofKind: AppConfiguration.Widget.Stats.Kind.homeAllTime.rawValue) + WidgetCenter.shared.reloadTimelines(ofKind: AppConfiguration.Widget.Stats.Kind.lockScreenAllTimeViews.rawValue) + WidgetCenter.shared.reloadTimelines(ofKind: AppConfiguration.Widget.Stats.Kind.lockScreenAllTimeViewsVisitors.rawValue) + WidgetCenter.shared.reloadTimelines(ofKind: AppConfiguration.Widget.Stats.Kind.lockScreenAllTimePostsBestViews.rawValue) } } diff --git a/WordPress/Jetpack/WidgetConfiguration.swift b/WordPress/Jetpack/WidgetConfiguration.swift index aec5b4d609b4..047bc2b54826 100644 --- a/WordPress/Jetpack/WidgetConfiguration.swift +++ b/WordPress/Jetpack/WidgetConfiguration.swift @@ -9,34 +9,25 @@ import Foundation static let keychainServiceName = "JetpackTodayWidget" static let userDefaultsSiteIdKey = "JetpackHomeWidgetsSiteId" static let userDefaultsLoggedInKey = "JetpackHomeWidgetsLoggedIn" - static let todayKind = "JetpackHomeWidgetToday" - static let allTimeKind = "JetpackHomeWidgetAllTime" - static let thisWeekKind = "JetpackHomeWidgetThisWeek" - static let todayProperties = "JetpackHomeWidgetTodayProperties" - static let allTimeProperties = "JetpackHomeWidgetAllTimeProperties" - static let thisWeekProperties = "JetpackHomeWidgetThisWeekProperties" static let todayFilename = "JetpackHomeWidgetTodayData.plist" static let allTimeFilename = "JetpackHomeWidgetAllTimeData.plist" static let thisWeekFilename = "JetpackHomeWidgetThisWeekData.plist" - /// Lock Screen - static let lockScreenTodayViewsKind = "JetpackLockScreenWidgetTodayViews" - static let lockScreenTodayViewsProperties = "JetpackLockScreenWidgetTodayViewsProperties" - - static let lockScreenTodayLikesCommentsKind = "JetpackLockScreenWidgetTodayLikesComments" - static let lockScreenTodayLikesCommentsProperties = "JetpackLockScreenWidgetTodayLikesCommentsProperties" - - static let lockScreenTodayViewsVisitorsKind = "JetpackLockScreenWidgetTodayViewsVisitors" - static let lockScreenTodayViewsVisitorsProperties = "JetpackLockScreenWidgetTodayViewsVisitorsProperties" - - static let lockScreenAllTimeViewsKind = "JetpackLockScreenWidgetAllTimeViews" - static let lockScreenAllTimeViewsProperties = "JetpackLockScreenWidgetAllTimeViewsProperties" - - static let lockScreenAllTimeViewsVisitorsKind = "JetpackLockScreenWidgetAllTimeViewsVisitors" - static let lockScreenAllTimeViewsVisitorsProperties = "JetpackLockScreenWidgetAllTimeViewsVisitorsProperties" - - static let lockScreenAllTimePostsBestViewsKind = "JetpackLockScreenWidgetAllTimePostsBestViews" - static let lockScreenAllTimePostsBestViewsProperties = "JetpackLockScreenWidgetAllTimeBestViewsProperties" + enum Kind: String { + case homeToday = "JetpackHomeWidgetToday" + case homeAllTime = "JetpackHomeWidgetAllTime" + case homeThisWeek = "JetpackHomeWidgetThisWeek" + case lockScreenTodayViews = "JetpackLockScreenWidgetTodayViews" + case lockScreenTodayLikesComments = "JetpackLockScreenWidgetTodayLikesComments" + case lockScreenTodayViewsVisitors = "JetpackLockScreenWidgetTodayViewsVisitors" + case lockScreenAllTimeViews = "JetpackLockScreenWidgetAllTimeViews" + case lockScreenAllTimeViewsVisitors = "JetpackLockScreenWidgetAllTimeViewsVisitors" + case lockScreenAllTimePostsBestViews = "JetpackLockScreenWidgetAllTimePostsBestViews" + + var countKey: String { + return rawValue + "Properties" + } + } } } } diff --git a/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimePostsBestViewsStatWidgetConfig.swift b/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimePostsBestViewsStatWidgetConfig.swift index fba6b1e1273f..f3da36aedbe5 100644 --- a/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimePostsBestViewsStatWidgetConfig.swift +++ b/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimePostsBestViewsStatWidgetConfig.swift @@ -21,11 +21,11 @@ struct LockScreenAllTimePostsBestViewsStatWidgetConfig: LockScreenStatsWidgetCon } var kind: String { - AppConfiguration.Widget.Stats.lockScreenAllTimePostsBestViewsKind + AppConfiguration.Widget.Stats.Kind.lockScreenAllTimePostsBestViews.rawValue } var countKey: String { - AppConfiguration.Widget.Stats.lockScreenAllTimePostsBestViewsProperties + AppConfiguration.Widget.Stats.Kind.lockScreenAllTimePostsBestViews.countKey } var placeholderContent: HomeWidgetAllTimeData { diff --git a/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimeViewsStatWidgetConfig.swift b/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimeViewsStatWidgetConfig.swift index e2ea1dedee90..2002510dabb4 100644 --- a/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimeViewsStatWidgetConfig.swift +++ b/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimeViewsStatWidgetConfig.swift @@ -21,11 +21,11 @@ struct LockScreenAllTimeViewsStatWidgetConfig: LockScreenStatsWidgetConfig { } var kind: String { - AppConfiguration.Widget.Stats.lockScreenAllTimeViewsKind + AppConfiguration.Widget.Stats.Kind.lockScreenAllTimeViews.rawValue } var countKey: String { - AppConfiguration.Widget.Stats.lockScreenAllTimeViewsProperties + AppConfiguration.Widget.Stats.Kind.lockScreenAllTimeViews.countKey } var placeholderContent: HomeWidgetAllTimeData { diff --git a/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimeViewsVisitorsStatWidgetConfig.swift b/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimeViewsVisitorsStatWidgetConfig.swift index 349423efcfcd..6e34ba74d698 100644 --- a/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimeViewsVisitorsStatWidgetConfig.swift +++ b/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimeViewsVisitorsStatWidgetConfig.swift @@ -21,11 +21,11 @@ struct LockScreenAllTimeViewsVisitorsStatWidgetConfig: LockScreenStatsWidgetConf } var kind: String { - AppConfiguration.Widget.Stats.lockScreenAllTimeViewsVisitorsKind + AppConfiguration.Widget.Stats.Kind.lockScreenAllTimeViewsVisitors.rawValue } var countKey: String { - AppConfiguration.Widget.Stats.lockScreenAllTimeViewsVisitorsProperties + AppConfiguration.Widget.Stats.Kind.lockScreenAllTimeViewsVisitors.countKey } var placeholderContent: HomeWidgetAllTimeData { diff --git a/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayLikesCommentsStatWidgetConfig.swift b/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayLikesCommentsStatWidgetConfig.swift index 64c4d26e7dae..0716c5bc36ec 100644 --- a/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayLikesCommentsStatWidgetConfig.swift +++ b/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayLikesCommentsStatWidgetConfig.swift @@ -21,11 +21,11 @@ struct LockScreenTodayLikesCommentsStatWidgetConfig: LockScreenStatsWidgetConfig } var kind: String { - AppConfiguration.Widget.Stats.lockScreenTodayLikesCommentsKind + AppConfiguration.Widget.Stats.Kind.lockScreenTodayLikesComments.rawValue } var countKey: String { - AppConfiguration.Widget.Stats.lockScreenTodayLikesCommentsProperties + AppConfiguration.Widget.Stats.Kind.lockScreenTodayLikesComments.countKey } var placeholderContent: HomeWidgetTodayData { diff --git a/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayViewsStatWidgetConfig.swift b/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayViewsStatWidgetConfig.swift index c3807b61b1de..beb76a86afe8 100644 --- a/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayViewsStatWidgetConfig.swift +++ b/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayViewsStatWidgetConfig.swift @@ -21,11 +21,11 @@ struct LockScreenTodayViewsStatWidgetConfig: LockScreenStatsWidgetConfig { } var kind: String { - AppConfiguration.Widget.Stats.lockScreenTodayViewsKind + AppConfiguration.Widget.Stats.Kind.lockScreenTodayViews.rawValue } var countKey: String { - AppConfiguration.Widget.Stats.lockScreenTodayViewsProperties + AppConfiguration.Widget.Stats.Kind.lockScreenTodayViews.countKey } var placeholderContent: HomeWidgetTodayData { diff --git a/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayViewsVisitorsStatWidgetConfig.swift b/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayViewsVisitorsStatWidgetConfig.swift index 7222e839216b..3f5ca23f47a5 100644 --- a/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayViewsVisitorsStatWidgetConfig.swift +++ b/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayViewsVisitorsStatWidgetConfig.swift @@ -21,11 +21,11 @@ struct LockScreenTodayViewsVisitorsStatWidgetConfig: LockScreenStatsWidgetConfig } var kind: String { - AppConfiguration.Widget.Stats.lockScreenTodayViewsVisitorsKind + AppConfiguration.Widget.Stats.Kind.lockScreenTodayViewsVisitors.rawValue } var countKey: String { - AppConfiguration.Widget.Stats.lockScreenTodayViewsVisitorsProperties + AppConfiguration.Widget.Stats.Kind.lockScreenTodayViewsVisitors.countKey } var placeholderContent: HomeWidgetTodayData { diff --git a/WordPress/JetpackStatsWidgets/Tracks/Tracks+StatsWidgets.swift b/WordPress/JetpackStatsWidgets/Tracks/Tracks+StatsWidgets.swift index 44341cd00f22..fae91294d7bd 100644 --- a/WordPress/JetpackStatsWidgets/Tracks/Tracks+StatsWidgets.swift +++ b/WordPress/JetpackStatsWidgets/Tracks/Tracks+StatsWidgets.swift @@ -95,13 +95,13 @@ extension Tracks { static func widgetUpdated(for key: String) -> ExtensionEvents { switch key { - case AppConfiguration.Widget.Stats.todayProperties: + case AppConfiguration.Widget.Stats.Kind.homeToday.countKey: return .todayWidgetUpdated - case AppConfiguration.Widget.Stats.allTimeProperties: + case AppConfiguration.Widget.Stats.Kind.homeAllTime.countKey: return .allTimeWidgetUpdated - case AppConfiguration.Widget.Stats.thisWeekProperties: + case AppConfiguration.Widget.Stats.Kind.homeThisWeek.countKey: return .thisWeekWidgetUpdated - case AppConfiguration.Widget.Stats.lockScreenTodayViewsProperties: + case AppConfiguration.Widget.Stats.Kind.lockScreenTodayViews.countKey: return .todayViewsLockScreenWidgetUpdated default: return .noEvent diff --git a/WordPress/JetpackStatsWidgets/Widgets/HomeWidgetAllTime.swift b/WordPress/JetpackStatsWidgets/Widgets/HomeWidgetAllTime.swift index 6c25f42d5a8f..7a4ffed53309 100644 --- a/WordPress/JetpackStatsWidgets/Widgets/HomeWidgetAllTime.swift +++ b/WordPress/JetpackStatsWidgets/Widgets/HomeWidgetAllTime.swift @@ -16,7 +16,7 @@ struct HomeWidgetAllTime: Widget { var body: some WidgetConfiguration { IntentConfiguration( - kind: AppConfiguration.Widget.Stats.allTimeKind, + kind: AppConfiguration.Widget.Stats.Kind.homeAllTime.rawValue, intent: SelectSiteIntent.self, provider: SiteListProvider(service: StatsWidgetsService(), placeholderContent: placeholderContent, @@ -25,8 +25,8 @@ struct HomeWidgetAllTime: Widget { defer { tracks.trackWidgetUpdatedIfNeeded(entry: entry, - widgetKind: AppConfiguration.Widget.Stats.allTimeKind, - widgetCountKey: AppConfiguration.Widget.Stats.allTimeProperties) + widgetKind: AppConfiguration.Widget.Stats.Kind.homeAllTime.rawValue, + widgetCountKey: AppConfiguration.Widget.Stats.Kind.homeAllTime.countKey) } return StatsWidgetsView(timelineEntry: entry) diff --git a/WordPress/JetpackStatsWidgets/Widgets/HomeWidgetThisWeek.swift b/WordPress/JetpackStatsWidgets/Widgets/HomeWidgetThisWeek.swift index c0a921790419..375f3cf27886 100644 --- a/WordPress/JetpackStatsWidgets/Widgets/HomeWidgetThisWeek.swift +++ b/WordPress/JetpackStatsWidgets/Widgets/HomeWidgetThisWeek.swift @@ -36,7 +36,7 @@ struct HomeWidgetThisWeek: Widget { var body: some WidgetConfiguration { IntentConfiguration( - kind: AppConfiguration.Widget.Stats.thisWeekKind, + kind: AppConfiguration.Widget.Stats.Kind.homeThisWeek.rawValue, intent: SelectSiteIntent.self, provider: SiteListProvider(service: StatsWidgetsService(), placeholderContent: placeholderContent, @@ -45,8 +45,8 @@ struct HomeWidgetThisWeek: Widget { defer { tracks.trackWidgetUpdatedIfNeeded(entry: entry, - widgetKind: AppConfiguration.Widget.Stats.thisWeekKind, - widgetCountKey: AppConfiguration.Widget.Stats.thisWeekProperties) + widgetKind: AppConfiguration.Widget.Stats.Kind.homeThisWeek.rawValue, + widgetCountKey: AppConfiguration.Widget.Stats.Kind.homeThisWeek.countKey) } return StatsWidgetsView(timelineEntry: entry) diff --git a/WordPress/JetpackStatsWidgets/Widgets/HomeWidgetToday.swift b/WordPress/JetpackStatsWidgets/Widgets/HomeWidgetToday.swift index 782ff6226448..3d83691dee12 100644 --- a/WordPress/JetpackStatsWidgets/Widgets/HomeWidgetToday.swift +++ b/WordPress/JetpackStatsWidgets/Widgets/HomeWidgetToday.swift @@ -17,7 +17,7 @@ struct HomeWidgetToday: Widget { var body: some WidgetConfiguration { IntentConfiguration( - kind: AppConfiguration.Widget.Stats.todayKind, + kind: AppConfiguration.Widget.Stats.Kind.homeToday.rawValue, intent: SelectSiteIntent.self, provider: SiteListProvider(service: StatsWidgetsService(), placeholderContent: placeholderContent, @@ -26,8 +26,8 @@ struct HomeWidgetToday: Widget { defer { tracks.trackWidgetUpdatedIfNeeded(entry: entry, - widgetKind: AppConfiguration.Widget.Stats.todayKind, - widgetCountKey: AppConfiguration.Widget.Stats.todayProperties) + widgetKind: AppConfiguration.Widget.Stats.Kind.homeToday.rawValue, + widgetCountKey: AppConfiguration.Widget.Stats.Kind.homeToday.countKey) } return StatsWidgetsView(timelineEntry: entry) From 601c12f2e2e9529ba3a74fe8889bf549d025b880 Mon Sep 17 00:00:00 2001 From: Povilas Staskus Date: Fri, 8 Sep 2023 14:52:58 +0300 Subject: [PATCH 2/6] Refactor widgets to use Kind enum --- ...llTimePostsBestViewsStatWidgetConfig.swift | 8 ++---- ...ckScreenAllTimeViewsStatWidgetConfig.swift | 8 ++---- ...AllTimeViewsVisitorsStatWidgetConfig.swift | 8 ++---- .../Configs/LockScreenStatsWidgetConfig.swift | 3 +-- ...enTodayLikesCommentsStatWidgetConfig.swift | 8 ++---- ...LockScreenTodayViewsStatWidgetConfig.swift | 8 ++---- ...enTodayViewsVisitorsStatWidgetConfig.swift | 8 ++---- .../LockScreenStatsWidget.swift | 5 ++-- .../Tracks/Tracks+StatsWidgets.swift | 26 ++++++++----------- .../Widgets/HomeWidgetAllTime.swift | 3 +-- .../Widgets/HomeWidgetThisWeek.swift | 3 +-- .../Widgets/HomeWidgetToday.swift | 3 +-- 12 files changed, 29 insertions(+), 62 deletions(-) diff --git a/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimePostsBestViewsStatWidgetConfig.swift b/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimePostsBestViewsStatWidgetConfig.swift index f3da36aedbe5..2b41bb0d847b 100644 --- a/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimePostsBestViewsStatWidgetConfig.swift +++ b/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimePostsBestViewsStatWidgetConfig.swift @@ -20,12 +20,8 @@ struct LockScreenAllTimePostsBestViewsStatWidgetConfig: LockScreenStatsWidgetCon LocalizableStrings.allTimePreviewDescription } - var kind: String { - AppConfiguration.Widget.Stats.Kind.lockScreenAllTimePostsBestViews.rawValue - } - - var countKey: String { - AppConfiguration.Widget.Stats.Kind.lockScreenAllTimePostsBestViews.countKey + var kind: AppConfiguration.Widget.Stats.Kind { + AppConfiguration.Widget.Stats.Kind.lockScreenAllTimePostsBestViews } var placeholderContent: HomeWidgetAllTimeData { diff --git a/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimeViewsStatWidgetConfig.swift b/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimeViewsStatWidgetConfig.swift index 2002510dabb4..278142e6e3e5 100644 --- a/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimeViewsStatWidgetConfig.swift +++ b/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimeViewsStatWidgetConfig.swift @@ -20,12 +20,8 @@ struct LockScreenAllTimeViewsStatWidgetConfig: LockScreenStatsWidgetConfig { LocalizableStrings.allTimePreviewDescription } - var kind: String { - AppConfiguration.Widget.Stats.Kind.lockScreenAllTimeViews.rawValue - } - - var countKey: String { - AppConfiguration.Widget.Stats.Kind.lockScreenAllTimeViews.countKey + var kind: AppConfiguration.Widget.Stats.Kind { + AppConfiguration.Widget.Stats.Kind.lockScreenAllTimeViews } var placeholderContent: HomeWidgetAllTimeData { diff --git a/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimeViewsVisitorsStatWidgetConfig.swift b/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimeViewsVisitorsStatWidgetConfig.swift index 6e34ba74d698..63100a11b020 100644 --- a/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimeViewsVisitorsStatWidgetConfig.swift +++ b/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenAllTimeViewsVisitorsStatWidgetConfig.swift @@ -20,12 +20,8 @@ struct LockScreenAllTimeViewsVisitorsStatWidgetConfig: LockScreenStatsWidgetConf LocalizableStrings.allTimePreviewDescription } - var kind: String { - AppConfiguration.Widget.Stats.Kind.lockScreenAllTimeViewsVisitors.rawValue - } - - var countKey: String { - AppConfiguration.Widget.Stats.Kind.lockScreenAllTimeViewsVisitors.countKey + var kind: AppConfiguration.Widget.Stats.Kind { + AppConfiguration.Widget.Stats.Kind.lockScreenAllTimeViewsVisitors } var placeholderContent: HomeWidgetAllTimeData { diff --git a/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenStatsWidgetConfig.swift b/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenStatsWidgetConfig.swift index f7f764b8a68e..dfd6e1bf4081 100644 --- a/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenStatsWidgetConfig.swift +++ b/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenStatsWidgetConfig.swift @@ -7,8 +7,7 @@ protocol LockScreenStatsWidgetConfig { var supportFamilies: [WidgetFamily] { get } var displayName: String { get } var description: String { get } - var kind: String { get } - var countKey: String { get } + var kind: AppConfiguration.Widget.Stats.Kind { get } var placeholderContent: WidgetData { get } var viewProvider: ViewProvider { get } } diff --git a/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayLikesCommentsStatWidgetConfig.swift b/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayLikesCommentsStatWidgetConfig.swift index 0716c5bc36ec..c654da5a5a08 100644 --- a/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayLikesCommentsStatWidgetConfig.swift +++ b/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayLikesCommentsStatWidgetConfig.swift @@ -20,12 +20,8 @@ struct LockScreenTodayLikesCommentsStatWidgetConfig: LockScreenStatsWidgetConfig LocalizableStrings.todayPreviewDescription } - var kind: String { - AppConfiguration.Widget.Stats.Kind.lockScreenTodayLikesComments.rawValue - } - - var countKey: String { - AppConfiguration.Widget.Stats.Kind.lockScreenTodayLikesComments.countKey + var kind: AppConfiguration.Widget.Stats.Kind { + AppConfiguration.Widget.Stats.Kind.lockScreenTodayLikesComments } var placeholderContent: HomeWidgetTodayData { diff --git a/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayViewsStatWidgetConfig.swift b/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayViewsStatWidgetConfig.swift index beb76a86afe8..b260a7966891 100644 --- a/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayViewsStatWidgetConfig.swift +++ b/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayViewsStatWidgetConfig.swift @@ -20,12 +20,8 @@ struct LockScreenTodayViewsStatWidgetConfig: LockScreenStatsWidgetConfig { LocalizableStrings.todayPreviewDescription } - var kind: String { - AppConfiguration.Widget.Stats.Kind.lockScreenTodayViews.rawValue - } - - var countKey: String { - AppConfiguration.Widget.Stats.Kind.lockScreenTodayViews.countKey + var kind: AppConfiguration.Widget.Stats.Kind { + AppConfiguration.Widget.Stats.Kind.lockScreenTodayViews } var placeholderContent: HomeWidgetTodayData { diff --git a/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayViewsVisitorsStatWidgetConfig.swift b/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayViewsVisitorsStatWidgetConfig.swift index 3f5ca23f47a5..3557f2f0b57d 100644 --- a/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayViewsVisitorsStatWidgetConfig.swift +++ b/WordPress/JetpackStatsWidgets/LockScreenWidgets/Configs/LockScreenTodayViewsVisitorsStatWidgetConfig.swift @@ -20,12 +20,8 @@ struct LockScreenTodayViewsVisitorsStatWidgetConfig: LockScreenStatsWidgetConfig LocalizableStrings.todayPreviewDescription } - var kind: String { - AppConfiguration.Widget.Stats.Kind.lockScreenTodayViewsVisitors.rawValue - } - - var countKey: String { - AppConfiguration.Widget.Stats.Kind.lockScreenTodayViewsVisitors.countKey + var kind: AppConfiguration.Widget.Stats.Kind { + AppConfiguration.Widget.Stats.Kind.lockScreenTodayViewsVisitors } var placeholderContent: HomeWidgetTodayData { diff --git a/WordPress/JetpackStatsWidgets/LockScreenWidgets/LockScreenStatsWidget.swift b/WordPress/JetpackStatsWidgets/LockScreenWidgets/LockScreenStatsWidget.swift index bb17dc109898..6eac12ea4154 100644 --- a/WordPress/JetpackStatsWidgets/LockScreenWidgets/LockScreenStatsWidget.swift +++ b/WordPress/JetpackStatsWidgets/LockScreenWidgets/LockScreenStatsWidget.swift @@ -17,7 +17,7 @@ struct LockScreenStatsWidget: Widget { var body: some WidgetConfiguration { IntentConfiguration( - kind: config.kind, + kind: config.kind.rawValue, intent: SelectSiteIntent.self, provider: LockScreenSiteListProvider( service: StatsWidgetsService(), @@ -26,8 +26,7 @@ struct LockScreenStatsWidget: Widget { ) { (entry: LockScreenStatsWidgetEntry) -> LockScreenStatsWidgetsView in defer { tracks.trackWidgetUpdatedIfNeeded(entry: entry, - widgetKind: config.kind, - widgetCountKey: config.countKey) + widgetKind: config.kind) } return LockScreenStatsWidgetsView( timelineEntry: entry, diff --git a/WordPress/JetpackStatsWidgets/Tracks/Tracks+StatsWidgets.swift b/WordPress/JetpackStatsWidgets/Tracks/Tracks+StatsWidgets.swift index fae91294d7bd..eedf59681f41 100644 --- a/WordPress/JetpackStatsWidgets/Tracks/Tracks+StatsWidgets.swift +++ b/WordPress/JetpackStatsWidgets/Tracks/Tracks+StatsWidgets.swift @@ -5,35 +5,31 @@ import WidgetKit /// extension Tracks { - func trackWidgetUpdatedIfNeeded(entry: LockScreenStatsWidgetEntry, widgetKind: String, widgetCountKey: String) { + func trackWidgetUpdatedIfNeeded(entry: LockScreenStatsWidgetEntry, widgetKind: AppConfiguration.Widget.Stats.Kind) { switch entry { case .siteSelected(_, let context): if !context.isPreview { - trackWidgetUpdated(widgetKind: widgetKind, - widgetCountKey: widgetCountKey) + trackWidgetUpdated(widgetKind: widgetKind) } case .loggedOut, .noSite, .noData: - trackWidgetUpdated(widgetKind: widgetKind, - widgetCountKey: widgetCountKey) + trackWidgetUpdated(widgetKind: widgetKind) } } - func trackWidgetUpdatedIfNeeded(entry: StatsWidgetEntry, widgetKind: String, widgetCountKey: String) { + func trackWidgetUpdatedIfNeeded(entry: StatsWidgetEntry, widgetKind: AppConfiguration.Widget.Stats.Kind) { switch entry { case .siteSelected(_, let context): if !context.isPreview { - trackWidgetUpdated(widgetKind: widgetKind, - widgetCountKey: widgetCountKey) + trackWidgetUpdated(widgetKind: widgetKind) } case .loggedOut, .noSite, .noData, .disabled: - trackWidgetUpdated(widgetKind: widgetKind, - widgetCountKey: widgetCountKey) + trackWidgetUpdated(widgetKind: widgetKind) } } - func trackWidgetUpdated(widgetKind: String, widgetCountKey: String) { + func trackWidgetUpdated(widgetKind: AppConfiguration.Widget.Stats.Kind) { DispatchQueue.global().async { WidgetCenter.shared.getCurrentConfigurations { result in @@ -41,8 +37,8 @@ extension Tracks { switch result { case .success(let widgetInfo): - let widgetKindInfo = widgetInfo.filter { $0.kind == widgetKind } - self.trackUpdatedWidgetInfo(widgetInfo: widgetKindInfo, widgetPropertiesKey: widgetCountKey) + let widgetKindInfo = widgetInfo.filter { $0.kind == widgetKind.rawValue } + self.trackUpdatedWidgetInfo(widgetInfo: widgetKindInfo, widgetKind: widgetKind) case .failure(let error): DDLogError("Home Widget Today error: unable to read widget information. \(error.localizedDescription)") @@ -51,8 +47,8 @@ extension Tracks { } } - private func trackUpdatedWidgetInfo(widgetInfo: [WidgetInfo], widgetPropertiesKey: String) { - + private func trackUpdatedWidgetInfo(widgetInfo: [WidgetInfo], widgetKind: AppConfiguration.Widget.Stats.Kind) { + let widgetPropertiesKey = widgetKind.countKey var properties = ["total_widgets": widgetInfo.count, "small_widgets": widgetInfo.filter { $0.family == .systemSmall }.count, "medium_widgets": widgetInfo.filter { $0.family == .systemMedium }.count, diff --git a/WordPress/JetpackStatsWidgets/Widgets/HomeWidgetAllTime.swift b/WordPress/JetpackStatsWidgets/Widgets/HomeWidgetAllTime.swift index 7a4ffed53309..921e08c176fe 100644 --- a/WordPress/JetpackStatsWidgets/Widgets/HomeWidgetAllTime.swift +++ b/WordPress/JetpackStatsWidgets/Widgets/HomeWidgetAllTime.swift @@ -25,8 +25,7 @@ struct HomeWidgetAllTime: Widget { defer { tracks.trackWidgetUpdatedIfNeeded(entry: entry, - widgetKind: AppConfiguration.Widget.Stats.Kind.homeAllTime.rawValue, - widgetCountKey: AppConfiguration.Widget.Stats.Kind.homeAllTime.countKey) + widgetKind: AppConfiguration.Widget.Stats.Kind.homeAllTime) } return StatsWidgetsView(timelineEntry: entry) diff --git a/WordPress/JetpackStatsWidgets/Widgets/HomeWidgetThisWeek.swift b/WordPress/JetpackStatsWidgets/Widgets/HomeWidgetThisWeek.swift index 375f3cf27886..d31b41ad5c0d 100644 --- a/WordPress/JetpackStatsWidgets/Widgets/HomeWidgetThisWeek.swift +++ b/WordPress/JetpackStatsWidgets/Widgets/HomeWidgetThisWeek.swift @@ -45,8 +45,7 @@ struct HomeWidgetThisWeek: Widget { defer { tracks.trackWidgetUpdatedIfNeeded(entry: entry, - widgetKind: AppConfiguration.Widget.Stats.Kind.homeThisWeek.rawValue, - widgetCountKey: AppConfiguration.Widget.Stats.Kind.homeThisWeek.countKey) + widgetKind: AppConfiguration.Widget.Stats.Kind.homeThisWeek) } return StatsWidgetsView(timelineEntry: entry) diff --git a/WordPress/JetpackStatsWidgets/Widgets/HomeWidgetToday.swift b/WordPress/JetpackStatsWidgets/Widgets/HomeWidgetToday.swift index 3d83691dee12..f9adf24ee844 100644 --- a/WordPress/JetpackStatsWidgets/Widgets/HomeWidgetToday.swift +++ b/WordPress/JetpackStatsWidgets/Widgets/HomeWidgetToday.swift @@ -26,8 +26,7 @@ struct HomeWidgetToday: Widget { defer { tracks.trackWidgetUpdatedIfNeeded(entry: entry, - widgetKind: AppConfiguration.Widget.Stats.Kind.homeToday.rawValue, - widgetCountKey: AppConfiguration.Widget.Stats.Kind.homeToday.countKey) + widgetKind: AppConfiguration.Widget.Stats.Kind.homeToday) } return StatsWidgetsView(timelineEntry: entry) From b8f59187b5dbf6a77b7a4fecb8ed08004ee22431 Mon Sep 17 00:00:00 2001 From: Povilas Staskus Date: Fri, 8 Sep 2023 14:55:19 +0300 Subject: [PATCH 3/6] Refactor StatsWidgets tracks to use Kind enum --- .../Tracks/Tracks+StatsWidgets.swift | 35 +++++++++---------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/WordPress/JetpackStatsWidgets/Tracks/Tracks+StatsWidgets.swift b/WordPress/JetpackStatsWidgets/Tracks/Tracks+StatsWidgets.swift index eedf59681f41..2587fb5235c8 100644 --- a/WordPress/JetpackStatsWidgets/Tracks/Tracks+StatsWidgets.swift +++ b/WordPress/JetpackStatsWidgets/Tracks/Tracks+StatsWidgets.swift @@ -65,7 +65,7 @@ extension Tracks { UserDefaults(suiteName: WPAppGroupName)?.set(properties, forKey: widgetPropertiesKey) - trackExtensionEvent(ExtensionEvents.widgetUpdated(for: widgetPropertiesKey), properties: properties as [String: AnyObject]?) + trackExtensionEvent(ExtensionEvents.widgetUpdated(for: widgetKind), properties: properties as [String: AnyObject]?) } // MARK: - Private Helpers @@ -78,27 +78,24 @@ extension Tracks { // MARK: - Private Enums fileprivate enum ExtensionEvents: String { - // User installs an instance of the today widget - case todayWidgetUpdated = "today_home_extension_widget_updated" - // User installs an instance of the all time widget - case allTimeWidgetUpdated = "alltime_home_extension_widget_updated" - // Users installs an instance of the this week widget - case thisWeekWidgetUpdated = "thisweek_home_extension_widget_updated" - // Users installs an instance of the lockscreen today views widget - case todayViewsLockScreenWidgetUpdated = "today_views_lockscreen_extension_widget_updated" + // Events when user installs an instance of the widget + case homeTodayWidgetUpdated = "today_home_extension_widget_updated" + case homeAllTimeWidgetUpdated = "alltime_home_extension_widget_updated" + case homeThisWeekWidgetUpdated = "thisweek_home_extension_widget_updated" + case lockScreenTodayViewsWidgetUpdated = "today_views_lockscreen_widget_updated" case noEvent - static func widgetUpdated(for key: String) -> ExtensionEvents { - switch key { - case AppConfiguration.Widget.Stats.Kind.homeToday.countKey: - return .todayWidgetUpdated - case AppConfiguration.Widget.Stats.Kind.homeAllTime.countKey: - return .allTimeWidgetUpdated - case AppConfiguration.Widget.Stats.Kind.homeThisWeek.countKey: - return .thisWeekWidgetUpdated - case AppConfiguration.Widget.Stats.Kind.lockScreenTodayViews.countKey: - return .todayViewsLockScreenWidgetUpdated + static func widgetUpdated(for widgetKind: AppConfiguration.Widget.Stats.Kind) -> ExtensionEvents { + switch widgetKind { + case .homeToday: + return .homeTodayWidgetUpdated + case .homeAllTime: + return .homeAllTimeWidgetUpdated + case .homeThisWeek: + return .homeThisWeekWidgetUpdated + case .lockScreenTodayViews: + return .lockScreenTodayViewsWidgetUpdated default: return .noEvent } From 6cb627be75c9aab50403682d5bf63b5f0c8db0ee Mon Sep 17 00:00:00 2001 From: Povilas Staskus Date: Fri, 8 Sep 2023 15:04:33 +0300 Subject: [PATCH 4/6] Add track events for all the widget kinds --- .../Tracks/Tracks+StatsWidgets.swift | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/WordPress/JetpackStatsWidgets/Tracks/Tracks+StatsWidgets.swift b/WordPress/JetpackStatsWidgets/Tracks/Tracks+StatsWidgets.swift index 2587fb5235c8..bca02f2d2a07 100644 --- a/WordPress/JetpackStatsWidgets/Tracks/Tracks+StatsWidgets.swift +++ b/WordPress/JetpackStatsWidgets/Tracks/Tracks+StatsWidgets.swift @@ -83,8 +83,11 @@ extension Tracks { case homeAllTimeWidgetUpdated = "alltime_home_extension_widget_updated" case homeThisWeekWidgetUpdated = "thisweek_home_extension_widget_updated" case lockScreenTodayViewsWidgetUpdated = "today_views_lockscreen_widget_updated" - - case noEvent + case lockScreenTodayLikesCommentsWidgetUpdated = "today_likes_comments_lockscreen_widget_updated" + case lockScreenTodayViewsVisitorsWidgetUpdated = "today_views_visitors_lockscreen_widget_updated" + case lockScreenAllTimeViewsWidgetUpdated = "all_time_views_lockscreen_widget_updated" + case lockScreenAllTimeViewsVisitorsWidgetUpdated = "all_time_views_visitors_lockscreen_widget_updated" + case lockScreenAllTimePostsBestViewsWidgetUpdated = "all_time_posts_best_views_lockscreen_widget_updated" static func widgetUpdated(for widgetKind: AppConfiguration.Widget.Stats.Kind) -> ExtensionEvents { switch widgetKind { @@ -96,8 +99,16 @@ extension Tracks { return .homeThisWeekWidgetUpdated case .lockScreenTodayViews: return .lockScreenTodayViewsWidgetUpdated - default: - return .noEvent + case .lockScreenTodayLikesComments: + return .lockScreenTodayLikesCommentsWidgetUpdated + case .lockScreenTodayViewsVisitors: + return .lockScreenTodayViewsVisitorsWidgetUpdated + case .lockScreenAllTimeViews: + return .lockScreenAllTimeViewsWidgetUpdated + case .lockScreenAllTimeViewsVisitors: + return .lockScreenAllTimeViewsVisitorsWidgetUpdated + case .lockScreenAllTimePostsBestViews: + return .lockScreenAllTimePostsBestViewsWidgetUpdated } } } From 9916551cd81843a660e00e26b6368e9444430265 Mon Sep 17 00:00:00 2001 From: Povilas Staskus Date: Mon, 11 Sep 2023 14:26:37 +0300 Subject: [PATCH 5/6] Log Widget Tracks events to Console for easier tracking --- WordPress/WordPressShareExtension/Tracks.swift | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/WordPress/WordPressShareExtension/Tracks.swift b/WordPress/WordPressShareExtension/Tracks.swift index 9ef803c2616c..3dad6077de19 100644 --- a/WordPress/WordPressShareExtension/Tracks.swift +++ b/WordPress/WordPressShareExtension/Tracks.swift @@ -1,4 +1,5 @@ import UIKit +import OSLog open class Tracks { // MARK: - Public Properties @@ -26,9 +27,9 @@ open class Tracks { let prefixedEventName = "\(TracksConfiguration.eventNamePrefix)_\(eventName)" let payload = payloadWithEventName(prefixedEventName, properties: properties) uploader.send(payload) - } - + logInfo("🔵 Tracked: \(prefixedEventName), \(properties ?? [:])") + } // MARK: - Private Helpers fileprivate func payloadWithEventName(_ eventName: String, properties: [String: Any]?) -> [String: Any] { @@ -154,3 +155,12 @@ open class Tracks { } } } + +private extension Tracks { + /// OSLog to Console application + private func logInfo(_ value: String) { + guard let subsystem = Bundle.main.bundleIdentifier else { return } + + Logger(subsystem: subsystem, category: "tracks").info("\(value)") + } +} From 6b88167072ff38ae03edb20a64e0bd5fa39d104c Mon Sep 17 00:00:00 2001 From: Povilas Staskus Date: Mon, 11 Sep 2023 14:29:21 +0300 Subject: [PATCH 6/6] Do not track widget type properties for lock screen widgets Lock Screen Widget are all of unique kind and only have one type for now --- .../Tracks/Tracks+StatsWidgets.swift | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/WordPress/JetpackStatsWidgets/Tracks/Tracks+StatsWidgets.swift b/WordPress/JetpackStatsWidgets/Tracks/Tracks+StatsWidgets.swift index bca02f2d2a07..f1f6261f5e46 100644 --- a/WordPress/JetpackStatsWidgets/Tracks/Tracks+StatsWidgets.swift +++ b/WordPress/JetpackStatsWidgets/Tracks/Tracks+StatsWidgets.swift @@ -49,12 +49,17 @@ extension Tracks { private func trackUpdatedWidgetInfo(widgetInfo: [WidgetInfo], widgetKind: AppConfiguration.Widget.Stats.Kind) { let widgetPropertiesKey = widgetKind.countKey - var properties = ["total_widgets": widgetInfo.count, + + var properties: [String: Int] = [:] + + switch widgetKind { + case .homeToday, .homeThisWeek, .homeAllTime: + properties = ["total_widgets": widgetInfo.count, "small_widgets": widgetInfo.filter { $0.family == .systemSmall }.count, "medium_widgets": widgetInfo.filter { $0.family == .systemMedium }.count, "large_widgets": widgetInfo.filter { $0.family == .systemLarge }.count] - if #available(iOS 16.0, *) { - properties["rectangular_widgets"] = widgetInfo.filter { $0.family == .accessoryRectangular }.count + default: + break } let previousProperties = UserDefaults(suiteName: WPAppGroupName)?.object(forKey: widgetPropertiesKey) as? [String: Int]