github.com/primecitizens/pcz/std@v0.2.1/plat/js/webext/loginscreenui/bindings/ffi_bindings.ts (about)

     1  import { importModule, Application, heap, Pointer } from "@ffi";
     2  
     3  importModule("plat/js/webext/loginscreenui", (A: Application) => {
     4    const WEBEXT = typeof globalThis.browser === "undefined" ? globalThis.chrome : globalThis.browser;
     5  
     6    return {
     7      "store_ShowOptions": (ptr: Pointer, ref: heap.Ref<any>) => {
     8        const x = A.H.get<any>(ref);
     9  
    10        if (typeof x === "undefined") {
    11          A.store.Bool(ptr + 6, false);
    12          A.store.Ref(ptr + 0, undefined);
    13          A.store.Bool(ptr + 5, false);
    14          A.store.Bool(ptr + 4, false);
    15        } else {
    16          A.store.Bool(ptr + 6, true);
    17          A.store.Ref(ptr + 0, x["url"]);
    18          A.store.Bool(ptr + 5, "userCanClose" in x ? true : false);
    19          A.store.Bool(ptr + 4, x["userCanClose"] ? true : false);
    20        }
    21      },
    22      "load_ShowOptions": (ptr: Pointer, create: heap.Ref<boolean>, ref: heap.Ref<any>): heap.Ref<any> => {
    23        const x = create === A.H.TRUE ? {} : A.H.get<any>(ref);
    24  
    25        x["url"] = A.load.Ref(ptr + 0, undefined);
    26        if (A.load.Bool(ptr + 5)) {
    27          x["userCanClose"] = A.load.Bool(ptr + 4);
    28        } else {
    29          delete x["userCanClose"];
    30        }
    31        return create === A.H.TRUE ? A.H.push(x) : ref;
    32      },
    33      "has_Close": (): heap.Ref<boolean> => {
    34        if (WEBEXT?.loginScreenUi && "close" in WEBEXT?.loginScreenUi) {
    35          return A.H.TRUE;
    36        }
    37        return A.H.FALSE;
    38      },
    39      "func_Close": (fn: Pointer): void => {
    40        A.store.Ref(fn, WEBEXT.loginScreenUi.close);
    41      },
    42      "call_Close": (retPtr: Pointer): void => {
    43        const _ret = WEBEXT.loginScreenUi.close();
    44        A.store.Ref(retPtr, _ret);
    45      },
    46      "try_Close": (retPtr: Pointer, errPtr: Pointer): heap.Ref<boolean> => {
    47        try {
    48          const _ret = WEBEXT.loginScreenUi.close();
    49          A.store.Ref(retPtr, _ret);
    50          return A.H.TRUE;
    51        } catch (err: any) {
    52          A.store.Ref(errPtr, err);
    53          return A.H.FALSE;
    54        }
    55      },
    56      "has_Show": (): heap.Ref<boolean> => {
    57        if (WEBEXT?.loginScreenUi && "show" in WEBEXT?.loginScreenUi) {
    58          return A.H.TRUE;
    59        }
    60        return A.H.FALSE;
    61      },
    62      "func_Show": (fn: Pointer): void => {
    63        A.store.Ref(fn, WEBEXT.loginScreenUi.show);
    64      },
    65      "call_Show": (retPtr: Pointer, options: Pointer): void => {
    66        const options_ffi = {};
    67  
    68        options_ffi["url"] = A.load.Ref(options + 0, undefined);
    69        if (A.load.Bool(options + 5)) {
    70          options_ffi["userCanClose"] = A.load.Bool(options + 4);
    71        }
    72  
    73        const _ret = WEBEXT.loginScreenUi.show(options_ffi);
    74        A.store.Ref(retPtr, _ret);
    75      },
    76      "try_Show": (retPtr: Pointer, errPtr: Pointer, options: Pointer): heap.Ref<boolean> => {
    77        try {
    78          const options_ffi = {};
    79  
    80          options_ffi["url"] = A.load.Ref(options + 0, undefined);
    81          if (A.load.Bool(options + 5)) {
    82            options_ffi["userCanClose"] = A.load.Bool(options + 4);
    83          }
    84  
    85          const _ret = WEBEXT.loginScreenUi.show(options_ffi);
    86          A.store.Ref(retPtr, _ret);
    87          return A.H.TRUE;
    88        } catch (err: any) {
    89          A.store.Ref(errPtr, err);
    90          return A.H.FALSE;
    91        }
    92      },
    93    };
    94  });