diff --git a/Multiplatform/Shared/AppAssets.swift b/Multiplatform/Shared/AppAssets.swift index 244c5fb87..fca390e06 100644 --- a/Multiplatform/Shared/AppAssets.swift +++ b/Multiplatform/Shared/AppAssets.swift @@ -18,40 +18,53 @@ struct AppAssets { }() #endif + static var accountBazQux: RSImage! = { + return RSImage(named: "accountBazQux") + }() + + static var accountLocalMacImage: RSImage! = { - return RSImage(named: "AccountLocalMac") + return RSImage(named: "accountLocalMac") }() static var accountLocalPadImage: RSImage = { - return RSImage(named: "AccountLocalPad")! + return RSImage(named: "accountLocalPad")! }() static var accountLocalPhoneImage: RSImage = { - return RSImage(named: "AccountLocalPhone")! + return RSImage(named: "accountLocalPhone")! }() static var accountCloudKitImage: RSImage = { - return RSImage(named: "AccountCloudKit")! + return RSImage(named: "accountCloudKit")! }() static var accountFeedbinImage: RSImage = { - return RSImage(named: "AccountFeedbin")! + return RSImage(named: "accountFeedbin")! }() static var accountFeedlyImage: RSImage = { - return RSImage(named: "AccountFeedly")! + return RSImage(named: "accountFeedly")! }() static var accountFeedWranglerImage: RSImage = { - return RSImage(named: "AccountFeedWrangler")! + return RSImage(named: "accountFeedWrangler")! }() static var accountFreshRSSImage: RSImage = { - return RSImage(named: "AccountFreshRSS")! + return RSImage(named: "accountFreshRSS")! + }() + + static var accountInoreader: RSImage! = { + return RSImage(named: "accountInoreader") }() static var accountNewsBlurImage: RSImage = { - return RSImage(named: "AccountNewsBlur")! + return RSImage(named: "accountNewsBlur")! + }() + + static var accountTheOldReader: RSImage! = { + return RSImage(named: "accountTheOldReader") }() static var addMenuImage: Image = { @@ -325,6 +338,8 @@ struct AppAssets { return AppAssets.accountLocalPhoneImage } #endif + case .bazQux: + return AppAssets.accountBazQux case .cloudKit: return AppAssets.accountCloudKitImage case .feedbin: @@ -337,6 +352,11 @@ struct AppAssets { return AppAssets.accountFreshRSSImage case .newsBlur: return AppAssets.accountNewsBlurImage + case .inoreader: + return AppAssets.accountInoreader + case .theOldReader: + return AppAssets.accountTheOldReader + } } diff --git a/Multiplatform/Shared/Assets.xcassets/AccountCloudKit.imageset/Contents.json b/Multiplatform/Shared/Assets.xcassets/AccountCloudKit.imageset/Contents.json index fc07d2975..b2f51e691 100644 --- a/Multiplatform/Shared/Assets.xcassets/AccountCloudKit.imageset/Contents.json +++ b/Multiplatform/Shared/Assets.xcassets/AccountCloudKit.imageset/Contents.json @@ -1,7 +1,17 @@ { "images" : [ { - "filename" : "icloud.pdf", + "filename" : "icloud-any.pdf", + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "icloud-dark.pdf", "idiom" : "universal" } ], @@ -10,6 +20,6 @@ "version" : 1 }, "properties" : { - "template-rendering-intent" : "template" + "template-rendering-intent" : "original" } } diff --git a/Multiplatform/Shared/Assets.xcassets/AccountCloudKit.imageset/icloud-any.pdf b/Multiplatform/Shared/Assets.xcassets/AccountCloudKit.imageset/icloud-any.pdf new file mode 100644 index 000000000..79ba7e3eb Binary files /dev/null and b/Multiplatform/Shared/Assets.xcassets/AccountCloudKit.imageset/icloud-any.pdf differ diff --git a/Multiplatform/Shared/Assets.xcassets/AccountCloudKit.imageset/icloud-dark.pdf b/Multiplatform/Shared/Assets.xcassets/AccountCloudKit.imageset/icloud-dark.pdf new file mode 100644 index 000000000..e876337ac Binary files /dev/null and b/Multiplatform/Shared/Assets.xcassets/AccountCloudKit.imageset/icloud-dark.pdf differ diff --git a/Multiplatform/Shared/Assets.xcassets/AccountFeedWrangler.imageset/Contents.json b/Multiplatform/Shared/Assets.xcassets/AccountFeedWrangler.imageset/Contents.json index 5e337ee42..f7b68151c 100644 --- a/Multiplatform/Shared/Assets.xcassets/AccountFeedWrangler.imageset/Contents.json +++ b/Multiplatform/Shared/Assets.xcassets/AccountFeedWrangler.imageset/Contents.json @@ -1,8 +1,52 @@ { "images" : [ { - "filename" : "outline-512.png", - "idiom" : "universal" + "filename" : "feedwranger-any-slice.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "feedwranger-dark-slice.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "feedwranger-any-slice@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "feedwranger-dark-slice@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "feedwranger-any-slice@3x.png", + "idiom" : "universal", + "scale" : "3x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "feedwranger-dark-slice@3x.png", + "idiom" : "universal", + "scale" : "3x" } ], "info" : { @@ -10,6 +54,6 @@ "version" : 1 }, "properties" : { - "template-rendering-intent" : "template" + "template-rendering-intent" : "original" } } diff --git a/Multiplatform/Shared/Assets.xcassets/AccountFeedWrangler.imageset/feedwranger-any-slice.png b/Multiplatform/Shared/Assets.xcassets/AccountFeedWrangler.imageset/feedwranger-any-slice.png new file mode 100644 index 000000000..a04e07f9a Binary files /dev/null and b/Multiplatform/Shared/Assets.xcassets/AccountFeedWrangler.imageset/feedwranger-any-slice.png differ diff --git a/Multiplatform/Shared/Assets.xcassets/AccountFeedWrangler.imageset/feedwranger-any-slice@2x.png b/Multiplatform/Shared/Assets.xcassets/AccountFeedWrangler.imageset/feedwranger-any-slice@2x.png new file mode 100644 index 000000000..dd25a60ae Binary files /dev/null and b/Multiplatform/Shared/Assets.xcassets/AccountFeedWrangler.imageset/feedwranger-any-slice@2x.png differ diff --git a/Multiplatform/Shared/Assets.xcassets/AccountFeedWrangler.imageset/feedwranger-any-slice@3x.png b/Multiplatform/Shared/Assets.xcassets/AccountFeedWrangler.imageset/feedwranger-any-slice@3x.png new file mode 100644 index 000000000..1fceca03d Binary files /dev/null and b/Multiplatform/Shared/Assets.xcassets/AccountFeedWrangler.imageset/feedwranger-any-slice@3x.png differ diff --git a/Multiplatform/Shared/Assets.xcassets/AccountFeedWrangler.imageset/feedwranger-dark-slice.png b/Multiplatform/Shared/Assets.xcassets/AccountFeedWrangler.imageset/feedwranger-dark-slice.png new file mode 100644 index 000000000..ff1990102 Binary files /dev/null and b/Multiplatform/Shared/Assets.xcassets/AccountFeedWrangler.imageset/feedwranger-dark-slice.png differ diff --git a/Multiplatform/Shared/Assets.xcassets/AccountFeedWrangler.imageset/feedwranger-dark-slice@2x.png b/Multiplatform/Shared/Assets.xcassets/AccountFeedWrangler.imageset/feedwranger-dark-slice@2x.png new file mode 100644 index 000000000..e2e52edb5 Binary files /dev/null and b/Multiplatform/Shared/Assets.xcassets/AccountFeedWrangler.imageset/feedwranger-dark-slice@2x.png differ diff --git a/Multiplatform/Shared/Assets.xcassets/AccountFeedWrangler.imageset/feedwranger-dark-slice@3x.png b/Multiplatform/Shared/Assets.xcassets/AccountFeedWrangler.imageset/feedwranger-dark-slice@3x.png new file mode 100644 index 000000000..e1640465a Binary files /dev/null and b/Multiplatform/Shared/Assets.xcassets/AccountFeedWrangler.imageset/feedwranger-dark-slice@3x.png differ diff --git a/Multiplatform/Shared/Assets.xcassets/AccountFeedWrangler.imageset/outline-512.png b/Multiplatform/Shared/Assets.xcassets/AccountFeedWrangler.imageset/outline-512.png deleted file mode 100644 index f7d29faa1..000000000 Binary files a/Multiplatform/Shared/Assets.xcassets/AccountFeedWrangler.imageset/outline-512.png and /dev/null differ diff --git a/Multiplatform/Shared/Assets.xcassets/AccountFeedbin.imageset/Contents.json b/Multiplatform/Shared/Assets.xcassets/AccountFeedbin.imageset/Contents.json index 3495fe8ef..ec7826d65 100644 --- a/Multiplatform/Shared/Assets.xcassets/AccountFeedbin.imageset/Contents.json +++ b/Multiplatform/Shared/Assets.xcassets/AccountFeedbin.imageset/Contents.json @@ -1,7 +1,17 @@ { "images" : [ { - "filename" : "feedbin-logo.pdf", + "filename" : "feedbin-logo-filled.pdf", + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "feedbin-logo-filled-1.pdf", "idiom" : "universal" } ], @@ -11,6 +21,6 @@ }, "properties" : { "preserves-vector-representation" : true, - "template-rendering-intent" : "template" + "template-rendering-intent" : "original" } } diff --git a/Multiplatform/Shared/Assets.xcassets/AccountFeedbin.imageset/feedbin-logo-filled-1.pdf b/Multiplatform/Shared/Assets.xcassets/AccountFeedbin.imageset/feedbin-logo-filled-1.pdf new file mode 100644 index 000000000..72ff612eb Binary files /dev/null and b/Multiplatform/Shared/Assets.xcassets/AccountFeedbin.imageset/feedbin-logo-filled-1.pdf differ diff --git a/Multiplatform/Shared/Assets.xcassets/AccountFeedbin.imageset/feedbin-logo-filled.pdf b/Multiplatform/Shared/Assets.xcassets/AccountFeedbin.imageset/feedbin-logo-filled.pdf new file mode 100644 index 000000000..72ff612eb Binary files /dev/null and b/Multiplatform/Shared/Assets.xcassets/AccountFeedbin.imageset/feedbin-logo-filled.pdf differ diff --git a/Multiplatform/Shared/Assets.xcassets/AccountFeedbin.imageset/feedbin-logo.pdf b/Multiplatform/Shared/Assets.xcassets/AccountFeedbin.imageset/feedbin-logo.pdf deleted file mode 100644 index de686614a..000000000 Binary files a/Multiplatform/Shared/Assets.xcassets/AccountFeedbin.imageset/feedbin-logo.pdf and /dev/null differ diff --git a/Multiplatform/Shared/Assets.xcassets/AccountFeedly.imageset/Contents.json b/Multiplatform/Shared/Assets.xcassets/AccountFeedly.imageset/Contents.json index 4034be795..236ba8fa6 100644 --- a/Multiplatform/Shared/Assets.xcassets/AccountFeedly.imageset/Contents.json +++ b/Multiplatform/Shared/Assets.xcassets/AccountFeedly.imageset/Contents.json @@ -1,7 +1,17 @@ { "images" : [ { - "filename" : "accountFeedly.pdf", + "filename" : "feedly-logo-any.pdf", + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "feedly-logo-dark.pdf", "idiom" : "universal" } ], @@ -10,6 +20,6 @@ "version" : 1 }, "properties" : { - "template-rendering-intent" : "template" + "template-rendering-intent" : "original" } } diff --git a/Multiplatform/Shared/Assets.xcassets/AccountFeedly.imageset/feedly-logo-any.pdf b/Multiplatform/Shared/Assets.xcassets/AccountFeedly.imageset/feedly-logo-any.pdf new file mode 100644 index 000000000..e1ccaab94 Binary files /dev/null and b/Multiplatform/Shared/Assets.xcassets/AccountFeedly.imageset/feedly-logo-any.pdf differ diff --git a/Multiplatform/Shared/Assets.xcassets/AccountFeedly.imageset/feedly-logo-dark.pdf b/Multiplatform/Shared/Assets.xcassets/AccountFeedly.imageset/feedly-logo-dark.pdf new file mode 100644 index 000000000..f287b271b Binary files /dev/null and b/Multiplatform/Shared/Assets.xcassets/AccountFeedly.imageset/feedly-logo-dark.pdf differ diff --git a/Multiplatform/Shared/Assets.xcassets/AccountFreshRSS.imageset/Contents.json b/Multiplatform/Shared/Assets.xcassets/AccountFreshRSS.imageset/Contents.json index 64a29ab45..f71a580b8 100644 --- a/Multiplatform/Shared/Assets.xcassets/AccountFreshRSS.imageset/Contents.json +++ b/Multiplatform/Shared/Assets.xcassets/AccountFreshRSS.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "accountFreshRSS.pdf", + "filename" : "FreshRSS.pdf", "idiom" : "universal" } ], @@ -10,6 +10,6 @@ "version" : 1 }, "properties" : { - "template-rendering-intent" : "template" + "template-rendering-intent" : "original" } } diff --git a/Multiplatform/Shared/Assets.xcassets/AccountFreshRSS.imageset/FreshRSS.pdf b/Multiplatform/Shared/Assets.xcassets/AccountFreshRSS.imageset/FreshRSS.pdf new file mode 100644 index 000000000..d9ba3f3ea Binary files /dev/null and b/Multiplatform/Shared/Assets.xcassets/AccountFreshRSS.imageset/FreshRSS.pdf differ diff --git a/Multiplatform/Shared/Assets.xcassets/AccountLocalMac.imageset/mac.pdf b/Multiplatform/Shared/Assets.xcassets/AccountLocalMac.imageset/mac.pdf deleted file mode 100644 index 7262b2c97..000000000 Binary files a/Multiplatform/Shared/Assets.xcassets/AccountLocalMac.imageset/mac.pdf and /dev/null differ diff --git a/Multiplatform/Shared/Assets.xcassets/AccountNewsBlur.imageset/Contents.json b/Multiplatform/Shared/Assets.xcassets/AccountNewsBlur.imageset/Contents.json index 9b23ec7d3..a73c591f6 100644 --- a/Multiplatform/Shared/Assets.xcassets/AccountNewsBlur.imageset/Contents.json +++ b/Multiplatform/Shared/Assets.xcassets/AccountNewsBlur.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "newsblur-512.png", + "filename" : "Newsblur-any.pdf", "idiom" : "universal" } ], @@ -10,6 +10,6 @@ "version" : 1 }, "properties" : { - "template-rendering-intent" : "template" + "template-rendering-intent" : "original" } } diff --git a/Multiplatform/Shared/Assets.xcassets/AccountNewsBlur.imageset/Newsblur-any.pdf b/Multiplatform/Shared/Assets.xcassets/AccountNewsBlur.imageset/Newsblur-any.pdf new file mode 100644 index 000000000..8b07ac745 Binary files /dev/null and b/Multiplatform/Shared/Assets.xcassets/AccountNewsBlur.imageset/Newsblur-any.pdf differ diff --git a/Multiplatform/Shared/Assets.xcassets/AccountNewsBlur.imageset/newsblur-512.png b/Multiplatform/Shared/Assets.xcassets/AccountNewsBlur.imageset/newsblur-512.png deleted file mode 100644 index 5fab67691..000000000 Binary files a/Multiplatform/Shared/Assets.xcassets/AccountNewsBlur.imageset/newsblur-512.png and /dev/null differ diff --git a/Multiplatform/Shared/Assets.xcassets/AccountLocalMac.imageset/Contents.json b/Multiplatform/Shared/Assets.xcassets/accountBazQux.imageset/Contents.json similarity index 53% rename from Multiplatform/Shared/Assets.xcassets/AccountLocalMac.imageset/Contents.json rename to Multiplatform/Shared/Assets.xcassets/accountBazQux.imageset/Contents.json index 2b1ddc334..25d8387f8 100644 --- a/Multiplatform/Shared/Assets.xcassets/AccountLocalMac.imageset/Contents.json +++ b/Multiplatform/Shared/Assets.xcassets/accountBazQux.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "mac.pdf", + "filename" : "bazqux-any.pdf", "idiom" : "universal" } ], @@ -10,6 +10,7 @@ "version" : 1 }, "properties" : { - "template-rendering-intent" : "template" + "preserves-vector-representation" : true, + "template-rendering-intent" : "original" } } diff --git a/Multiplatform/Shared/Assets.xcassets/accountBazQux.imageset/bazqux-any.pdf b/Multiplatform/Shared/Assets.xcassets/accountBazQux.imageset/bazqux-any.pdf new file mode 100644 index 000000000..d13a0defd Binary files /dev/null and b/Multiplatform/Shared/Assets.xcassets/accountBazQux.imageset/bazqux-any.pdf differ diff --git a/Multiplatform/Shared/Assets.xcassets/accountInoreader.imageset/Contents.json b/Multiplatform/Shared/Assets.xcassets/accountInoreader.imageset/Contents.json new file mode 100644 index 000000000..8711b150a --- /dev/null +++ b/Multiplatform/Shared/Assets.xcassets/accountInoreader.imageset/Contents.json @@ -0,0 +1,26 @@ +{ + "images" : [ + { + "filename" : "inoreader_logo-any.pdf", + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "inoreader_logo-dark.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true, + "template-rendering-intent" : "original" + } +} diff --git a/Multiplatform/Shared/Assets.xcassets/accountInoreader.imageset/inoreader_logo-any.pdf b/Multiplatform/Shared/Assets.xcassets/accountInoreader.imageset/inoreader_logo-any.pdf new file mode 100644 index 000000000..4c5befe74 Binary files /dev/null and b/Multiplatform/Shared/Assets.xcassets/accountInoreader.imageset/inoreader_logo-any.pdf differ diff --git a/Multiplatform/Shared/Assets.xcassets/accountInoreader.imageset/inoreader_logo-dark.pdf b/Multiplatform/Shared/Assets.xcassets/accountInoreader.imageset/inoreader_logo-dark.pdf new file mode 100644 index 000000000..2ab5d34dd Binary files /dev/null and b/Multiplatform/Shared/Assets.xcassets/accountInoreader.imageset/inoreader_logo-dark.pdf differ diff --git a/Multiplatform/Shared/Assets.xcassets/accountLocal.imageset/Contents.json b/Multiplatform/Shared/Assets.xcassets/accountLocal.imageset/Contents.json new file mode 100644 index 000000000..63f3b392e --- /dev/null +++ b/Multiplatform/Shared/Assets.xcassets/accountLocal.imageset/Contents.json @@ -0,0 +1,25 @@ +{ + "images" : [ + { + "filename" : "localAccountLight.pdf", + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "localAccountDark-1.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "template-rendering-intent" : "original" + } +} diff --git a/Multiplatform/Shared/Assets.xcassets/AccountFreshRSS.imageset/accountFreshRSS.pdf b/Multiplatform/Shared/Assets.xcassets/accountLocal.imageset/localAccountDark-1.pdf similarity index 68% rename from Multiplatform/Shared/Assets.xcassets/AccountFreshRSS.imageset/accountFreshRSS.pdf rename to Multiplatform/Shared/Assets.xcassets/accountLocal.imageset/localAccountDark-1.pdf index 1ff98e115..584b84f4a 100644 Binary files a/Multiplatform/Shared/Assets.xcassets/AccountFreshRSS.imageset/accountFreshRSS.pdf and b/Multiplatform/Shared/Assets.xcassets/accountLocal.imageset/localAccountDark-1.pdf differ diff --git a/Multiplatform/Shared/Assets.xcassets/AccountCloudKit.imageset/icloud.pdf b/Multiplatform/Shared/Assets.xcassets/accountLocal.imageset/localAccountLight.pdf similarity index 67% rename from Multiplatform/Shared/Assets.xcassets/AccountCloudKit.imageset/icloud.pdf rename to Multiplatform/Shared/Assets.xcassets/accountLocal.imageset/localAccountLight.pdf index 74406f4cb..d3d3d40e2 100644 Binary files a/Multiplatform/Shared/Assets.xcassets/AccountCloudKit.imageset/icloud.pdf and b/Multiplatform/Shared/Assets.xcassets/accountLocal.imageset/localAccountLight.pdf differ diff --git a/Multiplatform/Shared/Assets.xcassets/accountLocalMac.imageset/Contents.json b/Multiplatform/Shared/Assets.xcassets/accountLocalMac.imageset/Contents.json new file mode 100644 index 000000000..63f3b392e --- /dev/null +++ b/Multiplatform/Shared/Assets.xcassets/accountLocalMac.imageset/Contents.json @@ -0,0 +1,25 @@ +{ + "images" : [ + { + "filename" : "localAccountLight.pdf", + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "localAccountDark-1.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "template-rendering-intent" : "original" + } +} diff --git a/Multiplatform/Shared/Assets.xcassets/AccountFeedly.imageset/accountFeedly.pdf b/Multiplatform/Shared/Assets.xcassets/accountLocalMac.imageset/localAccountDark-1.pdf similarity index 64% rename from Multiplatform/Shared/Assets.xcassets/AccountFeedly.imageset/accountFeedly.pdf rename to Multiplatform/Shared/Assets.xcassets/accountLocalMac.imageset/localAccountDark-1.pdf index 907e486bc..584b84f4a 100644 Binary files a/Multiplatform/Shared/Assets.xcassets/AccountFeedly.imageset/accountFeedly.pdf and b/Multiplatform/Shared/Assets.xcassets/accountLocalMac.imageset/localAccountDark-1.pdf differ diff --git a/Multiplatform/Shared/Assets.xcassets/accountLocalMac.imageset/localAccountLight.pdf b/Multiplatform/Shared/Assets.xcassets/accountLocalMac.imageset/localAccountLight.pdf new file mode 100644 index 000000000..d3d3d40e2 Binary files /dev/null and b/Multiplatform/Shared/Assets.xcassets/accountLocalMac.imageset/localAccountLight.pdf differ diff --git a/Multiplatform/Shared/Assets.xcassets/accountTheOldReader.imageset/Contents.json b/Multiplatform/Shared/Assets.xcassets/accountTheOldReader.imageset/Contents.json new file mode 100644 index 000000000..231c33ab0 --- /dev/null +++ b/Multiplatform/Shared/Assets.xcassets/accountTheOldReader.imageset/Contents.json @@ -0,0 +1,26 @@ +{ + "images" : [ + { + "filename" : "oldreader-icon-any.pdf", + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "oldreader-icon-dark.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true, + "template-rendering-intent" : "original" + } +} diff --git a/Multiplatform/Shared/Assets.xcassets/accountTheOldReader.imageset/oldreader-icon-any.pdf b/Multiplatform/Shared/Assets.xcassets/accountTheOldReader.imageset/oldreader-icon-any.pdf new file mode 100644 index 000000000..05b0003b1 Binary files /dev/null and b/Multiplatform/Shared/Assets.xcassets/accountTheOldReader.imageset/oldreader-icon-any.pdf differ diff --git a/Multiplatform/Shared/Assets.xcassets/accountTheOldReader.imageset/oldreader-icon-dark.pdf b/Multiplatform/Shared/Assets.xcassets/accountTheOldReader.imageset/oldreader-icon-dark.pdf new file mode 100644 index 000000000..dfe4ce8b4 Binary files /dev/null and b/Multiplatform/Shared/Assets.xcassets/accountTheOldReader.imageset/oldreader-icon-dark.pdf differ diff --git a/Multiplatform/macOS/Preferences/Preference Panes/Accounts/Account Preferences/AccountsPreferencesView.swift b/Multiplatform/macOS/Preferences/Preference Panes/Accounts/Account Preferences/AccountsPreferencesView.swift index 67236d1c7..920470591 100644 --- a/Multiplatform/macOS/Preferences/Preference Panes/Accounts/Account Preferences/AccountsPreferencesView.swift +++ b/Multiplatform/macOS/Preferences/Preference Panes/Accounts/Account Preferences/AccountsPreferencesView.swift @@ -30,9 +30,7 @@ struct AccountsPreferencesView: View { content: { switch viewModel.sheetToShow { case .add: - AddAccountView(preferencesModel: viewModel) - .frame(width: 300, height: 200) - .padding() + AddAccountView() case .credentials: EditAccountCredentialsView(viewModel: viewModel) case .none: diff --git a/Multiplatform/macOS/Preferences/Preference Panes/Accounts/Account Preferences/Add Account/AddAccountModel.swift b/Multiplatform/macOS/Preferences/Preference Panes/Accounts/Account Preferences/Add Account/AddAccountModel.swift index 21074d617..61041526b 100644 --- a/Multiplatform/macOS/Preferences/Preference Panes/Accounts/Account Preferences/Add Account/AddAccountModel.swift +++ b/Multiplatform/macOS/Preferences/Preference Panes/Accounts/Account Preferences/Add Account/AddAccountModel.swift @@ -14,11 +14,7 @@ import RSCore class AddAccountModel: ObservableObject { - #if DEBUG - let addableAccountTypes: [AccountType] = [.onMyMac, .feedbin, .feedly, .feedWrangler, .freshRSS, .cloudKit, .newsBlur] - #else - let addableAccountTypes: [AccountType] = [.onMyMac, .feedbin, .feedly] - #endif + let addableAccountTypes: [AccountType] = [.onMyMac, .feedbin, .feedly, .feedWrangler, .freshRSS, .cloudKit, .newsBlur, .bazQux, .inoreader, .theOldReader] // Add Accounts @Published var selectedAddAccount: AccountType = .onMyMac @@ -56,8 +52,8 @@ class AddAccountModel: ObservableObject { authenticateFeedbin() case .feedWrangler: authenticateFeedWrangler() - case .freshRSS: - authenticateFreshRSS() + case .freshRSS, .inoreader, .bazQux, .theOldReader: + authenticateReaderAccount(selectedAddAccount) case .feedly: authenticateFeedly() case .newsBlur: @@ -214,49 +210,94 @@ extension AddAccountModel { } - private func authenticateFreshRSS() { + private func authenticateReaderAccount(_ accountType: AccountType) { accountIsAuthenticating = true let credentials = Credentials(type: .readerBasic, username: userName, secret: password) - Account.validateCredentials(type: .freshRSS, credentials: credentials, endpoint: URL(string: apiUrl)!) { [weak self] result in - - guard let self = self else { return } - - self.accountIsAuthenticating = false - - switch result { - case .success(let validatedCredentials): + if accountType == .freshRSS { + Account.validateCredentials(type: accountType, credentials: credentials, endpoint: URL(string: apiUrl)!) { [weak self] result in - guard let validatedCredentials = validatedCredentials else { - self.addAccountError = .invalidUsernamePassword - return - } + guard let self = self else { return } - let account = AccountManager.shared.createAccount(type: .freshRSS) + self.accountIsAuthenticating = false - do { - try account.removeCredentials(type: .readerBasic) - try account.removeCredentials(type: .readerAPIKey) - try account.storeCredentials(credentials) - try account.storeCredentials(validatedCredentials) - self.accountAdded = true - account.refreshAll(completion: { result in - switch result { - case .success: - break - case .failure(let error): - self.addAccountError = .other(error: error) - } - }) + switch result { + case .success(let validatedCredentials): - } catch { - self.addAccountError = .keyChainError + guard let validatedCredentials = validatedCredentials else { + self.addAccountError = .invalidUsernamePassword + return + } + + let account = AccountManager.shared.createAccount(type: .freshRSS) + + do { + try account.removeCredentials(type: .readerBasic) + try account.removeCredentials(type: .readerAPIKey) + try account.storeCredentials(credentials) + try account.storeCredentials(validatedCredentials) + self.accountAdded = true + account.refreshAll(completion: { result in + switch result { + case .success: + break + case .failure(let error): + self.addAccountError = .other(error: error) + } + }) + + } catch { + self.addAccountError = .keyChainError + } + + case .failure: + self.addAccountError = .networkError + } + } + } else { + + Account.validateCredentials(type: accountType, credentials: credentials) { [weak self] result in + + guard let self = self else { return } + + self.accountIsAuthenticating = false + + switch result { + case .success(let validatedCredentials): + + guard let validatedCredentials = validatedCredentials else { + self.addAccountError = .invalidUsernamePassword + return + } + + let account = AccountManager.shared.createAccount(type: .freshRSS) + + do { + try account.removeCredentials(type: .readerBasic) + try account.removeCredentials(type: .readerAPIKey) + try account.storeCredentials(credentials) + try account.storeCredentials(validatedCredentials) + self.accountAdded = true + account.refreshAll(completion: { result in + switch result { + case .success: + break + case .failure(let error): + self.addAccountError = .other(error: error) + } + }) + + } catch { + self.addAccountError = .keyChainError + } + + case .failure: + self.addAccountError = .networkError + } } - case .failure: - self.addAccountError = .networkError } - } + } private func authenticateCloudKit() { diff --git a/Multiplatform/macOS/Preferences/Preference Panes/Accounts/Account Preferences/Add Account/AddAccountPickerRow.swift b/Multiplatform/macOS/Preferences/Preference Panes/Accounts/Account Preferences/Add Account/AddAccountPickerRow.swift index 23366ac85..7a5ca0fe7 100644 --- a/Multiplatform/macOS/Preferences/Preference Panes/Accounts/Account Preferences/Add Account/AddAccountPickerRow.swift +++ b/Multiplatform/macOS/Preferences/Preference Panes/Accounts/Account Preferences/Add Account/AddAccountPickerRow.swift @@ -27,6 +27,12 @@ struct AddAccountPickerRow: View { Text(Account.defaultLocalAccountName) case .cloudKit: Text("iCloud") + case .inoreader: + Text("Inoreader") + case .theOldReader: + Text("The Old Reader") + case .bazQux: + Text("BazQux") case .feedbin: Text("Feedbin") case .feedWrangler: diff --git a/Multiplatform/macOS/Preferences/Preference Panes/Accounts/Account Preferences/Add Account/AddAccountView.swift b/Multiplatform/macOS/Preferences/Preference Panes/Accounts/Account Preferences/Add Account/AddAccountView.swift index 026aa0671..169980ce7 100644 --- a/Multiplatform/macOS/Preferences/Preference Panes/Accounts/Account Preferences/Add Account/AddAccountView.swift +++ b/Multiplatform/macOS/Preferences/Preference Panes/Accounts/Account Preferences/Add Account/AddAccountView.swift @@ -1,150 +1,269 @@ // // AddAccountView.swift -// Multiplatform macOS +// NetNewsWire // -// Created by Stuart Breckenridge on 13/7/20. +// Created by Stuart Breckenridge on 28/10/20. // Copyright © 2020 Ranchero Software. All rights reserved. // import SwiftUI import Account +enum AddAccountSections: Int, CaseIterable { + case local = 0 + case icloud + case web + case selfhosted + case allOrdered + + var sectionHeader: String { + switch self { + case .local: + return NSLocalizedString("Local", comment: "Local Account") + case .icloud: + return NSLocalizedString("iCloud", comment: "iCloud Account") + case .web: + return NSLocalizedString("Web", comment: "Web Account") + case .selfhosted: + return NSLocalizedString("Self-hosted", comment: "Self hosted Account") + case .allOrdered: + return "" + } + } + + var sectionFooter: String { + switch self { + case .local: + return NSLocalizedString("Local accounts do not sync subscriptions across devices.", comment: "Local Account") + case .icloud: + return NSLocalizedString("Use your iCloud account to sync your subscriptions across your iOS and macOS devices.", comment: "iCloud Account") + case .web: + return NSLocalizedString("Web accounts sync your subscriptions across all your devices.", comment: "Web Account") + case .selfhosted: + return NSLocalizedString("Self-hosted accounts sync your subscriptions across all your devices.", comment: "Self hosted Account") + case .allOrdered: + return "" + } + } + + var sectionContent: [AccountType] { + switch self { + case .local: + return [.onMyMac] + case .icloud: + return [.cloudKit] + case .web: + #if DEBUG + return [.bazQux, .feedbin, .feedly, .feedWrangler, .inoreader, .newsBlur, .theOldReader] + #else + return [.bazQux, .feedbin, .feedly, .feedWrangler, .inoreader, .newsBlur, .theOldReader] + #endif + case .selfhosted: + return [.freshRSS] + case .allOrdered: + return AddAccountSections.local.sectionContent + + AddAccountSections.icloud.sectionContent + + AddAccountSections.web.sectionContent + + AddAccountSections.selfhosted.sectionContent + } + } +} + struct AddAccountView: View { - @Environment(\.presentationMode) private var presentationMode - @ObservedObject var preferencesModel: AccountsPreferencesModel - @StateObject private var viewModel = AddAccountModel() - + @State private var selectedAccount: AccountType = .onMyMac + @Environment(\.presentationMode) var presentationMode + var body: some View { + VStack(alignment: .leading, spacing: 8) { + Text("Choose an account type to add...") + .font(.headline) + .padding() - Form { - Text("Add an Account").font(.headline) + localAccount + icloudAccount + webAccounts + selfhostedAccounts - Picker("Account Type", - selection: $viewModel.selectedAddAccount, - content: { - ForEach(0.. Bool { + AccountManager.shared.accounts.contains(where: { $0.type == .cloudKit }) } - var userNamePasswordAndAPIUrlView: some View { - Group { - TextField("Email", text: $viewModel.userName) - SecureField("Password", text: $viewModel.password) - TextField("API URL", text: $viewModel.apiUrl) - }.textFieldStyle(RoundedBorderTextFieldStyle()) - } - - var oAuthView: some View { - Group { - Text("Click Authenticate") - }.textFieldStyle(RoundedBorderTextFieldStyle()) - } - - -} -struct AddAccountView_Previews: PreviewProvider { - static var previews: some View { - AddAccountView(preferencesModel: AccountsPreferencesModel()) + private func isRestricted(_ accountType: AccountType) -> Bool { + if AppDefaults.shared.isDeveloperBuild && (accountType == .feedly || accountType == .feedWrangler || accountType == .inoreader) { + return true + } + return false } } + + diff --git a/Multiplatform/macOS/Preferences/Preference Panes/Accounts/Account Preferences/Edit Account/EditAccountCredentialsModel.swift b/Multiplatform/macOS/Preferences/Preference Panes/Accounts/Account Preferences/Edit Account/EditAccountCredentialsModel.swift index 28e5c10ea..a96b8e27e 100644 --- a/Multiplatform/macOS/Preferences/Preference Panes/Accounts/Account Preferences/Edit Account/EditAccountCredentialsModel.swift +++ b/Multiplatform/macOS/Preferences/Preference Panes/Accounts/Account Preferences/Edit Account/EditAccountCredentialsModel.swift @@ -42,9 +42,15 @@ class EditAccountCredentialsModel: ObservableObject { case .feedly: updateFeedly(account) case .freshRSS: - updateFreshRSS(account) + updateReaderAccount(account) case .newsBlur: updateNewsblur(account) + case .inoreader: + updateReaderAccount(account) + case .bazQux: + updateReaderAccount(account) + case .theOldReader: + updateReaderAccount(account) } } @@ -168,11 +174,11 @@ extension EditAccountCredentialsModel { MainThreadOperationQueue.shared.add(updateAccount) } - func updateFreshRSS(_ account: Account) { + func updateReaderAccount(_ account: Account) { accountIsUpdatingCredentials = true let credentials = Credentials(type: .readerBasic, username: userName, secret: password) - Account.validateCredentials(type: .freshRSS, credentials: credentials) { [weak self] result in + Account.validateCredentials(type: account.type, credentials: credentials) { [weak self] result in guard let self = self else { return } diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index 57f8fbed8..78ea7758a 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -34,6 +34,8 @@ 1729529524AA1CAA00D65E66 /* GeneralPreferencesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1729529224AA1CAA00D65E66 /* GeneralPreferencesView.swift */; }; 1729529724AA1CD000D65E66 /* MacPreferencePanes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1729529624AA1CD000D65E66 /* MacPreferencePanes.swift */; }; 1729529B24AA1FD200D65E66 /* MacSearchField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1729529A24AA1FD200D65E66 /* MacSearchField.swift */; }; + 17386B5E2577BC820014C8B2 /* AccountType+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 173A64162547BE0900267F6E /* AccountType+Helpers.swift */; }; + 17386B6C2577BD820014C8B2 /* RSSparkle in Frameworks */ = {isa = PBXBuildFile; productRef = 17386B6B2577BD820014C8B2 /* RSSparkle */; }; 173A64172547BE0900267F6E /* AccountType+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 173A64162547BE0900267F6E /* AccountType+Helpers.swift */; }; 173A642C2547BE9600267F6E /* AccountType+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 173A64162547BE0900267F6E /* AccountType+Helpers.swift */; }; 175942AA24AD533200585066 /* RefreshInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5183CCE4226F4DFA0010922C /* RefreshInterval.swift */; }; @@ -1980,6 +1982,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 17386B6C2577BD820014C8B2 /* RSSparkle in Frameworks */, 516B695B24D2F28600B5702F /* Account in Frameworks */, 51E498B124A806A400B667CB /* CloudKit.framework in Frameworks */, 51E498B324A806AA00B667CB /* WebKit.framework in Frameworks */, @@ -3662,6 +3665,7 @@ name = "Multiplatform macOS"; packageProductDependencies = ( 516B695A24D2F28600B5702F /* Account */, + 17386B6B2577BD820014C8B2 /* RSSparkle */, ); productName = macOS; productReference = 51C0514424A77DF800194D5E /* NetNewsWire.app */; @@ -4653,6 +4657,7 @@ 51B54B6724B6A7960014348B /* WebStatusBarView.swift in Sources */, 51E4993E24A870F900B667CB /* UserNotificationManager.swift in Sources */, 51E4992E24A8676300B667CB /* FetchRequestQueue.swift in Sources */, + 17386B5E2577BC820014C8B2 /* AccountType+Helpers.swift in Sources */, 51E498CF24A8085D00B667CB /* SmartFeed.swift in Sources */, 51E4990724A808C300B667CB /* AuthorAvatarDownloader.swift in Sources */, 51E4997424A8784400B667CB /* DefaultFeedsImporter.swift in Sources */, @@ -5829,6 +5834,11 @@ package = 17192AD82567B3D500AAEACA /* XCRemoteSwiftPackageReference "Sparkle-Binary" */; productName = RSSparkle; }; + 17386B6B2577BD820014C8B2 /* RSSparkle */ = { + isa = XCSwiftPackageProductDependency; + package = 17192AD82567B3D500AAEACA /* XCRemoteSwiftPackageReference "Sparkle-Binary" */; + productName = RSSparkle; + }; 17A1597B24E3DEDD005DA32A /* RSCore */ = { isa = XCSwiftPackageProductDependency; package = 5102AE4324D17E820050839C /* XCRemoteSwiftPackageReference "RSCore" */;