fix: screenshot privacy setting not working on app relaunch (#1900)
This commit is contained in:
@@ -220,10 +220,12 @@ export class MobileDevice implements MobileDeviceInterface {
|
||||
|
||||
hideMobileInterfaceFromScreenshots(): void {
|
||||
hide()
|
||||
this.setAndroidScreenshotPrivacy(true)
|
||||
}
|
||||
|
||||
stopHidingMobileInterfaceFromScreenshots(): void {
|
||||
show()
|
||||
this.setAndroidScreenshotPrivacy(false)
|
||||
}
|
||||
|
||||
async getAllRawStorageKeyValues() {
|
||||
|
||||
@@ -261,6 +261,14 @@ export class WebApplication extends SNApplication implements WebApplicationInter
|
||||
setViewportHeightWithFallback()
|
||||
}
|
||||
|
||||
handleInitialMobileScreenshotPrivacy(): void {
|
||||
if (this.protections.getMobileScreenshotPrivacyEnabled()) {
|
||||
this.mobileDevice().hideMobileInterfaceFromScreenshots()
|
||||
} else {
|
||||
this.mobileDevice().stopHidingMobileInterfaceFromScreenshots()
|
||||
}
|
||||
}
|
||||
|
||||
async handleMobileLosingFocusEvent(): Promise<void> {
|
||||
if (this.protections.getMobileScreenshotPrivacyEnabled()) {
|
||||
this.mobileDevice().stopHidingMobileInterfaceFromScreenshots()
|
||||
|
||||
@@ -150,6 +150,7 @@ export class ViewControllerManager implements InternalEventHandlerInterface {
|
||||
this.toastService = new ToastService()
|
||||
|
||||
this.applicationEventObserver = new ApplicationEventObserver(
|
||||
application,
|
||||
application.routeService,
|
||||
this.purchaseFlowController,
|
||||
this.accountMenuController,
|
||||
|
||||
@@ -26,8 +26,10 @@ import { SyncStatusController } from '@/Controllers/SyncStatusController'
|
||||
import { AccountMenuPane } from '@/Components/AccountMenu/AccountMenuPane'
|
||||
|
||||
import { ApplicationEventObserver } from './ApplicationEventObserver'
|
||||
import { WebApplication } from '@/Application/Application'
|
||||
|
||||
describe('ApplicationEventObserver', () => {
|
||||
let application: WebApplication
|
||||
let routeService: RouteServiceInterface
|
||||
let purchaseFlowController: PurchaseFlowController
|
||||
let accountMenuController: AccountMenuController
|
||||
@@ -40,6 +42,7 @@ describe('ApplicationEventObserver', () => {
|
||||
|
||||
const createObserver = () =>
|
||||
new ApplicationEventObserver(
|
||||
application,
|
||||
routeService,
|
||||
purchaseFlowController,
|
||||
accountMenuController,
|
||||
@@ -52,6 +55,8 @@ describe('ApplicationEventObserver', () => {
|
||||
)
|
||||
|
||||
beforeEach(() => {
|
||||
application = {} as jest.Mocked<WebApplication>
|
||||
|
||||
routeService = {} as jest.Mocked<RouteServiceInterface>
|
||||
routeService.getRoute = jest.fn().mockReturnValue({
|
||||
type: RouteType.None,
|
||||
@@ -223,4 +228,15 @@ describe('ApplicationEventObserver', () => {
|
||||
expect(syncStatusController.update).toHaveBeenCalled()
|
||||
})
|
||||
})
|
||||
|
||||
describe('Upon Database Loaded', () => {
|
||||
it('should handle mobile screenshot privacy setting', async () => {
|
||||
application.isNativeMobileWeb = jest.fn().mockReturnValue(true)
|
||||
application.handleInitialMobileScreenshotPrivacy = jest.fn()
|
||||
|
||||
await createObserver().handle(ApplicationEvent.LocalDataLoaded)
|
||||
|
||||
expect(application.handleInitialMobileScreenshotPrivacy).toHaveBeenCalled()
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@@ -20,9 +20,11 @@ import { SyncStatusController } from '@/Controllers/SyncStatusController'
|
||||
import { AccountMenuPane } from '@/Components/AccountMenu/AccountMenuPane'
|
||||
|
||||
import { EventObserverInterface } from './EventObserverInterface'
|
||||
import { WebApplication } from '@/Application/Application'
|
||||
|
||||
export class ApplicationEventObserver implements EventObserverInterface {
|
||||
constructor(
|
||||
private application: WebApplication,
|
||||
private routeService: RouteServiceInterface,
|
||||
private purchaseFlowController: PurchaseFlowController,
|
||||
private accountMenuController: AccountMenuController,
|
||||
@@ -89,6 +91,11 @@ export class ApplicationEventObserver implements EventObserverInterface {
|
||||
case ApplicationEvent.SyncStatusChanged:
|
||||
this.syncStatusController.update(this.syncClient.getSyncStatus())
|
||||
break
|
||||
case ApplicationEvent.LocalDataLoaded:
|
||||
if (this.application.isNativeMobileWeb()) {
|
||||
this.application.handleInitialMobileScreenshotPrivacy()
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user