mirror of
https://github.com/bitwarden/browser
synced 2025-12-12 22:33:35 +00:00
Resolve safari not checking vault timeout every 10s (#1615)
This commit is contained in:
2
jslib
2
jslib
Submodule jslib updated: 0951424de7...b0ae1bfa4c
@@ -19,7 +19,6 @@ import {
|
|||||||
TokenService,
|
TokenService,
|
||||||
TotpService,
|
TotpService,
|
||||||
UserService,
|
UserService,
|
||||||
VaultTimeoutService,
|
|
||||||
} from 'jslib/services';
|
} from 'jslib/services';
|
||||||
import { ConsoleLogService } from 'jslib/services/consoleLog.service';
|
import { ConsoleLogService } from 'jslib/services/consoleLog.service';
|
||||||
import { EventService } from 'jslib/services/event.service';
|
import { EventService } from 'jslib/services/event.service';
|
||||||
@@ -84,6 +83,7 @@ import BrowserMessagingService from '../services/browserMessaging.service';
|
|||||||
import BrowserPlatformUtilsService from '../services/browserPlatformUtils.service';
|
import BrowserPlatformUtilsService from '../services/browserPlatformUtils.service';
|
||||||
import BrowserStorageService from '../services/browserStorage.service';
|
import BrowserStorageService from '../services/browserStorage.service';
|
||||||
import I18nService from '../services/i18n.service';
|
import I18nService from '../services/i18n.service';
|
||||||
|
import VaultTimeoutService from '../services/vaultTimeout.service';
|
||||||
|
|
||||||
import { AutofillService as AutofillServiceAbstraction } from '../services/abstractions/autofill.service';
|
import { AutofillService as AutofillServiceAbstraction } from '../services/abstractions/autofill.service';
|
||||||
|
|
||||||
|
|||||||
@@ -73,6 +73,11 @@ class SafariWebExtensionHandler: NSObject, NSExtensionRequestHandling {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
|
case "sleep":
|
||||||
|
DispatchQueue.main.asyncAfter(deadline: .now() + 10) {
|
||||||
|
context.completeRequest(returningItems: [response], completionHandler: nil)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return
|
return
|
||||||
|
|||||||
28
src/services/vaultTimeout.service.ts
Normal file
28
src/services/vaultTimeout.service.ts
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
import { VaultTimeoutService as BaseVaultTimeoutService } from 'jslib/services/vaultTimeout.service';
|
||||||
|
import { SafariApp } from '../browser/safariApp';
|
||||||
|
|
||||||
|
export default class VaultTimeoutService extends BaseVaultTimeoutService {
|
||||||
|
|
||||||
|
startCheck() {
|
||||||
|
this.checkVaultTimeout();
|
||||||
|
if (this.platformUtilsService.isSafari()) {
|
||||||
|
this.checkSafari();
|
||||||
|
} else {
|
||||||
|
setInterval(() => this.checkVaultTimeout(), 10 * 1000); // check every 10 seconds
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// This is a work-around to safari adding an arbitary delay to setTimeout and
|
||||||
|
// setIntervals. It works by calling the native extension which sleeps for 10s,
|
||||||
|
// efficiently replicating setInterval.
|
||||||
|
async checkSafari() {
|
||||||
|
while(true) {
|
||||||
|
try {
|
||||||
|
await SafariApp.sendMessageToApp('sleep');
|
||||||
|
this.checkVaultTimeout();
|
||||||
|
} catch(e) {
|
||||||
|
console.log("Exception Safari VaultTimeout", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user