Goal
This PR adds the Signed Out Home feature to Pocket. Specifically
- Adds the "Skip sign in" button in the onboarding screen, that allows users to access Pocket anonymously
- Tapping the button takes you to the signed out home, which contains recommendations and a banner that lets you sign in when you want. Tapping any Save action also prompts the user to sign in
- Opening a native collection and tapping any Save button, prompts the login screen
- Opening a syndicated article in the reader view and tapping any Saves button, prompts the login screen
- Tapping "Saves" in the tab bar, shows an empty saves list with a button that lets you sign in. Tapping filter buttons and the add url button also prompt the user to sign in
- Tapping "Settings" in the tab bar shows a settings page similar to the authenticated one, but the account section only contains a "Sign up or sign in" button.
[!NOTE]
at the moment, the exit survey that follows account deletion is disabled, since the UX has changed and now takes the user to signed out home after deletion. We can discuss a potential new UX that reinstates it.
Test Steps
- Enable the new onboarding feature flag
- Build/run this branch, install from scratch
- Verify the steps described in the intro or showed in the video.
- Try multiple paths
- Test on real devices, both iPads and iPhones
- Delete, reinstall and verify that the original sign in button (now renamed from "Continue" to "Sign up or sign in") works as intended
Related Issues
POCKET-10292
POCKET-10293
POCKET-10294 + child issues
POCKET-10295
POCKET-10297
POCKET-10298
POCKET-10300
POCKET-10318
POCKET-10375
POCKET-10401
POCKET-10413
POCKET-10414
POCKET-10415
Video
|
Messages |
| :book: |
No SwiftLint violations! 🎉 |
| :book: |
Project coverage: 37.36% |
| :book: |
Checking XCode Environment Variables |
| :book: |
Edited 86 files |
| :book: |
Created 5 files |
Analytics: Coverage: 59.21
| File |
Coverage |
|
| SignedOut.swift |
100.0% |
✅ |
| Login.swift |
26.67% |
⚠️ |
PocketKit: Coverage: 62.56
| File |
Coverage |
|
| LoggedOutViewController.swift |
0.0% |
⚠️ |
| ShareWithYouListViewModel.swift |
0.0% |
⚠️ |
| PocketAppIcon.swift |
0.0% |
⚠️ |
| ReaderSettingsView.swift |
69.61% |
✅ |
| HomeViewModel.swift |
66.46% |
✅ |
| HomeCollectionViewSectionProvider.swift |
49.53% |
⚠️ |
| SavesContainerViewController.swift |
74.69% |
✅ |
| PocketSubscriptionStore.swift |
74.61% |
✅ |
| RecommendableItemViewModel.swift |
81.48% |
✅ |
| ArchiveEmptyStateViewModel.swift |
100.0% |
✅ |
| HomeViewController.swift |
70.25% |
✅ |
| CollectionStoryViewModel.swift |
91.55% |
✅ |
| CollectionViewModel.swift |
86.86% |
✅ |
| LoggedOutViewModel.swift |
70.11% |
✅ |
| SavesEmptyStateViewModel.swift |
100.0% |
✅ |
| PocketBraze.swift |
54.19% |
✅ |
| SigninBannerCell.swift |
56.18% |
✅ |
| OfflineEmptyState.swift |
55.0% |
✅ |
| DebugMenuView.swift |
0.0% |
⚠️ |
| SearchEmptyState.swift |
100.0% |
✅ |
| Services.swift |
96.34% |
✅ |
| SettingsView.swift |
81.21% |
✅ |
| RootView.swift |
79.09% |
✅ |
| PocketAppDelegate.swift |
86.67% |
✅ |
| RefreshCoordinator.swift |
82.82% |
✅ |
| GetPremiumEmptyState.swift |
100.0% |
✅ |
| SlateDetailViewModel.swift |
83.51% |
✅ |
| HomeCellStyle.swift |
100.0% |
✅ |
| SavedItemsListViewModel.swift |
83.3% |
✅ |
| PushNotificationService.swift |
78.15% |
✅ |
| EmptyStateView.swift |
85.5% |
✅ |
| SharedWithYouStore.swift |
77.94% |
✅ |
| RecentSearchEmptyState.swift |
100.0% |
✅ |
| AccountViewModel.swift |
46.19% |
⚠️ |
| ReaderSettings.swift |
62.02% |
✅ |
| PocketAccessService.swift |
69.66% |
✅ |
| FavoritesEmptyStateViewModel.swift |
100.0% |
✅ |
| NoResultsEmptyState.swift |
100.0% |
✅ |
| TagsEmptyStateViewModel.swift |
100.0% |
✅ |
| SavesContainerViewModel.swift |
63.27% |
✅ |
| UserManagementService.swift |
71.19% |
✅ |
| RootViewModel.swift |
70.9% |
✅ |
| MainViewModel.swift |
32.36% |
⚠️ |
| ErrorEmptyState.swift |
0.0% |
⚠️ |
| SearchViewModel.swift |
56.85% |
✅ |
SaveToPocketKit: Coverage: 29.0
| File |
Coverage |
|
| SavedItemViewModel.swift |
80.79% |
✅ |
| MainViewController.swift |
0.0% |
⚠️ |
| SaveToUserManagementService.swift |
0.0% |
⚠️ |
SharedPocketKit: Coverage: 63.5
| File |
Coverage |
|
| CurrentFeatureFlags.swift |
0.0% |
⚠️ |
| UIView+Utilities.swift |
100.0% |
✅ |
| LastRefresh.swift |
85.33% |
✅ |
| UserDefaultsKey.swift |
95.71% |
✅ |
| Session.swift |
100.0% |
✅ |
| AppSession.swift |
100.0% |
✅ |
| SignOutOnFirstLaunch.swift |
100.0% |
✅ |
Sync: Coverage: 71.72
| File |
Coverage |
|
| ItemWidgetsService.swift |
0.0% |
⚠️ |
| WidgetsSessionService.swift |
46.15% |
⚠️ |
SaveToPocketKitTests: Coverage: 0.0
| File |
Coverage |
|
| SaveToUserManagementService.swift |
0.0% |
⚠️ |
| SavedItemViewModelTests.swift |
0.0% |
⚠️ |
| SavedItemViewModel.swift |
0.0% |
⚠️ |
| MainViewController.swift |
0.0% |
⚠️ |
SyncTests: Coverage: 22.74
| File |
Coverage |
|
| WidgetsSessionService.swift |
46.15% |
⚠️ |
| ItemWidgetsService.swift |
0.0% |
⚠️ |
Tests iOS.xctest: Coverage: 18.68
| File |
Coverage |
|
| AnonymousModeTests.swift |
100.0% |
✅ |
| HomeTests.swift |
0.0% |
⚠️ |
| LaunchEnvironment.swift |
100.0% |
✅ |
| PocketAppElement.swift |
39.6% |
⚠️ |
| SettingsTests.swift |
94.93% |
✅ |
| SettingsViewElement.swift |
66.67% |
✅ |
| HomeViewElement.swift |
31.88% |
⚠️ |
SharedPocketKitTests: Coverage: 29.88
| File |
Coverage |
|
| CurrentFeatureFlags.swift |
0.0% |
⚠️ |
| UIView+Utilities.swift |
100.0% |
✅ |
| LastRefresh.swift |
84.0% |
✅ |
| UserDefaultsKey.swift |
95.08% |
✅ |
| Session.swift |
100.0% |
✅ |
| AppSession.swift |
100.0% |
✅ |
| SignOutOnFirstLaunch.swift |
100.0% |
✅ |
ItemWidgets.appex: Coverage: 0.0
| File |
Coverage |
|
| TopicQuery.swift |
0.0% |
⚠️ |
| TopicTimelineProvider.swift |
0.0% |
⚠️ |
| ItemWidgetsProvider.swift |
0.0% |
⚠️ |
AnalyticsTests: Coverage: 24.1
| File |
Coverage |
|
| SignedOut.swift |
95.0% |
✅ |
| Login.swift |
0.0% |
⚠️ |
PocketKitTests: Coverage: 28.97
| File |
Coverage |
|
| LoggedOutViewController.swift |
0.0% |
⚠️ |
| ShareWithYouListViewModel.swift |
0.0% |
⚠️ |
| PocketAppIcon.swift |
0.0% |
⚠️ |
| Session.swift |
100.0% |
✅ |
| ReaderSettingsView.swift |
0.0% |
⚠️ |
| HomeViewModel.swift |
45.5% |
⚠️ |
| UIView+Utilities.swift |
100.0% |
✅ |
| HomeCollectionViewSectionProvider.swift |
48.58% |
⚠️ |
| SavesContainerViewController.swift |
51.29% |
✅ |
| SignOutOnFirstLaunch.swift |
100.0% |
✅ |
| InstantSyncTests.swift |
0.0% |
⚠️ |
| HomeViewModelTests.swift |
0.0% |
⚠️ |
| PocketSubscriptionStore.swift |
48.19% |
⚠️ |
| CurrentFeatureFlags.swift |
0.0% |
⚠️ |
| RecommendableItemViewModel.swift |
0.0% |
⚠️ |
| UserDefaultsKey.swift |
95.08% |
✅ |
| ArchiveEmptyStateViewModel.swift |
0.0% |
⚠️ |
| HomeViewController.swift |
46.4% |
⚠️ |
| CollectionStoryViewModel.swift |
0.0% |
⚠️ |
| CollectionViewModel.swift |
0.0% |
⚠️ |
| LoggedOutViewModel.swift |
0.0% |
⚠️ |
| SavesEmptyStateViewModel.swift |
100.0% |
✅ |
| PocketBraze.swift |
54.19% |
✅ |
| SigninBannerCell.swift |
56.18% |
✅ |
| OfflineEmptyState.swift |
0.0% |
⚠️ |
| DebugMenuView.swift |
0.0% |
⚠️ |
| SearchEmptyState.swift |
100.0% |
✅ |
| Services.swift |
95.81% |
✅ |
| SettingsView.swift |
91.36% |
✅ |
| UserManagementServiceTests.swift |
0.0% |
⚠️ |
| RootView.swift |
84.55% |
✅ |
| HomeRefreshCoordinatorTests.swift |
0.0% |
⚠️ |
| PocketAppDelegate.swift |
92.73% |
✅ |
| RefreshCoordinator.swift |
73.62% |
✅ |
| GetPremiumEmptyState.swift |
0.0% |
⚠️ |
| SlateDetailViewModel.swift |
46.67% |
⚠️ |
| SavesRefreshCoordinatorTests.swift |
0.0% |
⚠️ |
| RecommendableItemViewModelTests.swift |
0.0% |
⚠️ |
| HomeCellStyle.swift |
100.0% |
✅ |
| SavedItemsListViewModel.swift |
53.21% |
✅ |
| PushNotificationService.swift |
73.95% |
✅ |
| EmptyStateView.swift |
82.0% |
✅ |
| SharedWithYouStore.swift |
80.88% |
✅ |
| RecentSearchEmptyState.swift |
100.0% |
✅ |
| AccountViewModel.swift |
39.01% |
⚠️ |
| LastRefresh.swift |
84.0% |
✅ |
| ReaderSettings.swift |
40.31% |
⚠️ |
| PocketAccessService.swift |
66.29% |
✅ |
| FavoritesEmptyStateViewModel.swift |
0.0% |
⚠️ |
| LoggedOutViewModelTests.swift |
0.0% |
⚠️ |
| DefaultSearchViewModelTests.swift |
0.0% |
⚠️ |
| NoResultsEmptyState.swift |
0.0% |
⚠️ |
| AppSession.swift |
100.0% |
✅ |
| TagsEmptyStateViewModel.swift |
0.0% |
⚠️ |
| SavesContainerViewModel.swift |
38.78% |
⚠️ |
| UserManagementService.swift |
62.71% |
✅ |
| RootViewModel.swift |
72.39% |
✅ |
| MainViewModel.swift |
53.22% |
✅ |
| ErrorEmptyState.swift |
0.0% |
⚠️ |
| PushNotificationServiceTests.swift |
0.0% |
⚠️ |
| SavedItemsListViewModelTests.swift |
0.0% |
⚠️ |
| CollectionViewModelTests.swift |
0.0% |
⚠️ |
| SlateDetailViewModelTests.swift |
0.0% |
⚠️ |
| SearchViewModel.swift |
18.78% |
⚠️ |
Generated by :no_entry_sign: Danger Swift against 5dd97427de0582bc48e9a097b79ba6a02492197a
@Gio2018 what do you think about removing the filters toolbar from Saves when signed out?

@Gio2018 what do you think about removing the filters toolbar from Saves when signed out? 
@dnarcese sure!