mirror of
https://github.com/transatoshi-mw/grin-web-wallet.git
synced 2025-10-06 15:52:47 +00:00
138 lines
2.3 KiB
JavaScript
Executable File
138 lines
2.3 KiB
JavaScript
Executable File
// Use strict
|
|
"use strict";
|
|
|
|
|
|
// Classes
|
|
|
|
// Wake lock class
|
|
class WakeLock {
|
|
|
|
// Public
|
|
|
|
// Constructor
|
|
constructor() {
|
|
|
|
// Set lock
|
|
this.lock = WakeLock.NO_LOCK;
|
|
|
|
// Set self
|
|
var self = this;
|
|
|
|
// Document visibility change event
|
|
$(document).on("visibilitychange", function() {
|
|
|
|
// Check if wake lock already exists and page is now visible
|
|
if(self.lock !== WakeLock.NO_LOCK && document["visibilityState"] === Common.VISIBILITY_STATE_VISIBLE) {
|
|
|
|
// Request wake lock
|
|
navigator["wakeLock"].request("screen").then(function(lock) {
|
|
|
|
// Set lock
|
|
self.lock = lock;
|
|
|
|
// Catch errors
|
|
}).catch(function(error) {
|
|
|
|
// Clear lock
|
|
self.lock = WakeLock.NO_LOCK;
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
// Prevent lock
|
|
preventLock() {
|
|
|
|
// Set self
|
|
var self = this;
|
|
|
|
// Return promise
|
|
return new Promise(function(resolve, reject) {
|
|
|
|
// Check if wake is already locked
|
|
if(self.lock !== WakeLock.NO_LOCK)
|
|
|
|
// Resolve
|
|
resolve();
|
|
|
|
// Otherwise check if wake lock is supported
|
|
else if(typeof navigator === "object" && navigator !== null && "wakeLock" in navigator === true) {
|
|
|
|
// Request wake lock
|
|
navigator["wakeLock"].request("screen").then(function(lock) {
|
|
|
|
// Set lock
|
|
self.lock = lock;
|
|
|
|
// Resolve
|
|
resolve();
|
|
|
|
// Catch errors
|
|
}).catch(function(error) {
|
|
|
|
// Reject
|
|
reject();
|
|
});
|
|
}
|
|
|
|
// Otherwise
|
|
else
|
|
|
|
// Reject
|
|
reject();
|
|
});
|
|
}
|
|
|
|
// Allow lock
|
|
allowLock() {
|
|
|
|
// Set self
|
|
var self = this;
|
|
|
|
// Return promise
|
|
return new Promise(function(resolve, reject) {
|
|
|
|
// Check if wake is already unlocked
|
|
if(self.lock === WakeLock.NO_LOCK)
|
|
|
|
// Resolve
|
|
resolve();
|
|
|
|
// Otherwise
|
|
else {
|
|
|
|
// Request wake unlock
|
|
self.lock.release().then(function() {
|
|
|
|
// Clear lock
|
|
self.lock = WakeLock.NO_LOCK;
|
|
|
|
// Resolve
|
|
resolve();
|
|
|
|
// Catch errors
|
|
}).catch(function(error) {
|
|
|
|
// Reject
|
|
reject();
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
// Private
|
|
|
|
// No lock
|
|
static get NO_LOCK() {
|
|
|
|
// Return no lock
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
// Main function
|
|
|
|
// Set global object's wake lock
|
|
globalThis["WakeLock"] = WakeLock;
|