"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
};
Object.defineProperty(exports, "__esModule", { value: true });
const Semifunctional_1 = require("../../../../../Class/Semifunctional");
const _ids_1 = require("../../../../_ids");
class WakeLock extends Semifunctional_1.Semifunctional {
    constructor(system) {
        super({
            fi: ['lock'],
            fo: [],
            i: ['done'],
            o: [],
        }, {}, system, _ids_1.ID_WAKE_LOCK);
        this._lock = (opt) => __awaiter(this, void 0, void 0, function* () {
            const { api: { screen: { requestWakeLock }, }, } = this.__system;
            // console.log('WakeLock', '_lock')
            const wake_lock = yield requestWakeLock(opt);
            wake_lock.addListener('done', this._on_release);
            this._wake_lock = wake_lock;
        });
        this._release = () => {
            // console.log('WakeLock', '_release')
            if (this._wake_lock) {
                this._wake_lock.done();
            }
        };
        this._on_release = () => {
            // console.log('WakeLock', '_on_release')
            this._wake_lock = null;
        };
    }
    f({ lock }, done) {
        this._lock({ type: 'screen' });
    }
    d() {
        this._release();
    }
    onIterDataInputData(name, data) {
        // if (name === 'done') {
        this._release();
        // }
    }
}
exports.default = WakeLock;
//# sourceMappingURL=index.js.map