Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Comment thread
guarani marked this conversation as resolved.
}

// iOS13 Stats Today Widgets
Expand Down
15 changes: 14 additions & 1 deletion WordPress/Jetpack/WidgetConfiguration.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}


Expand Down
24 changes: 24 additions & 0 deletions WordPress/WordPress.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -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 */; };
Expand Down Expand Up @@ -5950,6 +5958,10 @@
01CE5006290A889F00A9C2E0 /* TracksConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TracksConfiguration.swift; sourceTree = "<group>"; };
01CE5010290A890300A9C2E0 /* TracksConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TracksConfiguration.swift; sourceTree = "<group>"; };
01D2FF5D2AA733690038E040 /* LockScreenFieldView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LockScreenFieldView.swift; sourceTree = "<group>"; };
01D2FF602AA77C5F0038E040 /* LockScreenAllTimeViewsStatWidgetConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LockScreenAllTimeViewsStatWidgetConfig.swift; sourceTree = "<group>"; };
01D2FF632AA77F790038E040 /* LockScreenTodayViewsVisitorsStatWidgetConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LockScreenTodayViewsVisitorsStatWidgetConfig.swift; sourceTree = "<group>"; };
01D2FF662AA780DC0038E040 /* LockScreenAllTimeViewsVisitorsStatWidgetConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LockScreenAllTimeViewsVisitorsStatWidgetConfig.swift; sourceTree = "<group>"; };
01D2FF692AA782720038E040 /* LockScreenAllTimePostsBestViewsStatWidgetConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LockScreenAllTimePostsBestViewsStatWidgetConfig.swift; sourceTree = "<group>"; };
01DBFD8629BDCBF200F3720F /* JetpackNativeConnectionService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JetpackNativeConnectionService.swift; sourceTree = "<group>"; };
01E61E5929F03DEC002E544E /* DashboardDomainsCardSearchView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashboardDomainsCardSearchView.swift; sourceTree = "<group>"; };
01E78D1C296EA54F00FB6863 /* StatsPeriodHelperTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatsPeriodHelperTests.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -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 = "<group>";
Expand Down Expand Up @@ -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 */,
Expand Down Expand Up @@ -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 */,
Expand Down Expand Up @@ -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 */,
Expand Down Expand Up @@ -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 */,
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Comment thread
guarani marked this conversation as resolved.
}

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<HomeWidgetAllTimeData> {
LockScreenMultiStatWidgetViewProvider<HomeWidgetAllTimeData>(
widgetKind: .today,
topTitle: LocalizableStrings.postsTitle,
topValue: \.stats.posts,
bottomTitle: LocalizableStrings.bestViewsShortTitle,
bottomValue: \.stats.bestViews
)
}
}
Original file line number Diff line number Diff line change
@@ -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<HomeWidgetAllTimeData> {
LockScreenSingleStatWidgetViewProvider<HomeWidgetAllTimeData>(
title: LocalizableStrings.allTimeViewsTitle,
value: \.stats.views,
widgetKind: .allTime
)
}
}
Original file line number Diff line number Diff line change
@@ -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<HomeWidgetAllTimeData> {
LockScreenMultiStatWidgetViewProvider<HomeWidgetAllTimeData>(
widgetKind: .today,
topTitle: LocalizableStrings.viewsTitle,
topValue: \.stats.views,
bottomTitle: LocalizableStrings.visitorsTitle,
bottomValue: \.stats.visitors
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ struct LockScreenTodayLikesCommentsStatWidgetConfig: LockScreenStatsWidgetConfig
}

var displayName: String {
LocalizableStrings.todayWidgetTitle
LocalizableStrings.todayLikesCommentsWidgetPreviewTitle
}

var description: String {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ struct LockScreenTodayViewsStatWidgetConfig: LockScreenStatsWidgetConfig {
}

var displayName: String {
LocalizableStrings.todayWidgetTitle
LocalizableStrings.todayViewsWidgetPreviewTitle
}

var description: String {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import WidgetKit

@available(iOS 16.0, *)
struct LockScreenTodayViewsVisitorsStatWidgetConfig: LockScreenStatsWidgetConfig {
typealias WidgetData = HomeWidgetTodayData
typealias ViewProvider = LockScreenMultiStatWidgetViewProvider<WidgetData>

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
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
Loading