Current section
Files
Jump to
Current section
Files
src/wechat_base_ffi.mjs
import { Ok, Error } from "./gleam.mjs"
import { WechatError } from "./wechat/object.mjs"
export function login(cb) {
return new Promise(resolve => {
wx.login({
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function checkSession(cb) {
return new Promise(resolve => {
wx.checkSession({
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function setStorage(k, v, cb) {
return new Promise(resolve => {
wx.setStorage({
key: k,
data: v,
complete: cb,
success(res) { resolve(new Ok({})) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function getStorage(k, cb) {
return new Promise(resolve => {
wx.getStorage({
key: k,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function removeStorage(k, cb) {
return new Promise(resolve => {
wx.removeStorage({
key: k,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function clearStorage(cb) {
return new Promise(resolve => {
wx.clearStorage({
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function getStorageInfo(cb) {
return new Promise(resolve => {
wx.getStorageInfo({
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function saveFile(p, cb) {
return new Promise(resolve => {
wx.saveFile({
tempFilePath: p,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function getFileInfo(p, a, cb) {
return new Promise(resolve => {
wx.getFileInfo({
filePath: p,
digestAlgorithm: a,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function getSavedFileList(cb) {
return new Promise(resolve => {
wx.getSavedFileList({
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function removeSavedFile(fp, cb) {
return new Promise(resolve => {
wx.removeSavedFile({
filePath: fp,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function openDocument(p, t, cb) {
return new Promise(resolve => {
wx.openDocument({
filePath: p,
fileType: t,
complete: cb,
success() { resolve(new Ok({})) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function uploadFile(u, p, h, f, cb) {
return new Promise(resolve => {
wx.uploadFile({
url: u,
filePath: p,
name: "file",
header: h,
formData: f,
complete: cb,
success() { resolve(new Ok({})) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function getSystemInfo(cb) {
return new Promise(resolve => {
wx.getSystemInfo({
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function getSetting(s, cb) {
return new Promise(resolve => {
wx.getSetting({
withSubscriptions: s,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function setClipboardData(d, cb) {
return new Promise(resolve => {
wx.setClipboardData({
data: d,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function getClipboardData(cb) {
return new Promise(resolve => {
wx.getClipboardData({
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function setNavigationBarTitle(t, cb) {
return new Promise(resolve => {
wx.setNavigationBarTitle({
title: t,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function vibrateShort(t, cb) {
return new Promise(resolve => {
wx.vibrateShort({
type: t,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function vibrateLong(cb) {
return new Promise(resolve => {
wx.vibrateLong({
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function showTabbar(a, cb) {
return new Promise(resolve => {
wx.showTabbar({
animation: a,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function hideTabbar(cb) {
return new Promise(resolve => {
wx.hideTabbar({
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function showLoading(t, m, cb) {
return new Promise(resolve => {
wx.showLoading({
title: t,
mask: m,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function hideLoading(cb) {
return new Promise(resolve => {
wx.hideLoading({
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function showToast(t, i, m, d, cb) {
return new Promise(resolve => {
wx.showToast({
title: t,
icon: i,
mask: m,
duration: d,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function getPrivacySetting(cb) {
return new Promise(resolve => {
wx.getPrivacySetting({
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function getPrivacyContract(cb) {
return new Promise(resolve => {
wx.getPrivacyContract({
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function switchTab(u, cb) {
return new Promise(resolve => {
wx.switchTab({
url: u,
complete: cb,
success(res) { resolve(new Ok({})) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function reLaunch(u, cb) {
return new Promise(resolve => {
wx.reLaunch({
url: u,
complete: cb,
success(res) { resolve(new Ok({})) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function navigateTo(u, cb) {
return new Promise(resolve => {
wx.navigateTo({
url: u,
complete: cb,
success(res) { resolve(new Ok({})) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function navigateBack(d, cb) {
return new Promise(resolve => {
wx.navigateBack({
delta: d,
complete: cb,
success(res) { resolve(new Ok({})) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function request(o) {
return new Promise(resolve => {
wx.request({
...o,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) },
})
})
}
export function requestPayment(o) {
return new Promise(resolve => {
wx.requestPayment({
...o,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) },
})
})
}
export function now() {
return new Date();
}
export function ymd(dt) {
return new Promise(resolve => {
let y = dt.getFullYear();
let m = dt.getMonth() + 1;
let d = dt.getDate();
let month = m < 10 ? `0${m}` : `${m}`;
let day = d < 10 ? `0${d}` : `${d}`;
resolve(new Ok(`${y}-${month}-${day}`));
})
}
export function scanCode(st, cb) {
return new Promise(resolve => {
wx.scanCode({
scanType: st,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function getLocation(a, cb) {
return new Promise(resolve => {
wx.getLocation({
altitude: a,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function chooseLocation(lat, lon, cb) {
return new Promise(resolve => {
wx.chooseLocation({
latitude: lat,
longitude: lon,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function openLocation(lat, lon, s, n, a, cb) {
return new Promise(resolve => {
wx.openLocation({
latitude: lat,
longitude: lon,
scale: s,
name: n,
address: a,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function createGlobalPayment() {
return wx.createGlobalPayment();
}
export function requestCommonPayment(o, cb) {
return new Promise(resolve => {
wx.requestCommonPayment({
...o,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function globalPaymentOpenMethodPicker(gp) {
gp.openMethodPicker();
}
export function globalPaymentRequestGlobalPayment(gp, o) {
gp.requestGlobalPayment(o);
}
export function globalPaymentAbort(gp) {
gp.abort();
}
export function chooseAddress(cb) {
return new Promise(resolve => {
wx.chooseAddress({
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function getUserProfile(d, cb) {
return new Promise(resolve => {
wx.getUserProfile({
desc: d,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function getUserInfo(wc, l, cb) {
return new Promise(resolve => {
wx.getUserInfo({
withCredentials: wc,
lang: l,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function requestSubscribeMessage(t, cb) {
return new Promise(resolve => {
wx.requestSubscribeMessage({
tmplIds: t,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function authorize(s, cb) {
return new Promise(resolve => {
wx.authorize({
scope: s,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function openSetting(cb) {
return new Promise(resolve => {
wx.openSetting({
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function makePhoneCall(pn, cb) {
return new Promise(resolve => {
wx.makePhoneCall({
phoneNumber: pn,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function navigateToMiniProgram(a, p, ed, cb) {
return new Promise(resolve => {
wx.navigateToMiniProgram({
appId: a,
path: p,
extraData: ed,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function navigateBackMiniProgram(ed, cb) {
return new Promise(resolve => {
wx.navigateBackMiniProgram({
extraData: ed,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function exitMiniProgram(cb) {
return new Promise(resolve => {
wx.exitMiniProgram({
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function createCacheManager(options) {
return wx.createCacheManager(options);
}
export function getPerformance() {
return wx.getPerformance();
}
export function reportPerformance(name, duration, options) {
wx.reportPerformance(name, duration, options);
}
export function reportEvent(name, data, options) {
wx.reportEvent(name, data, options);
}
export function reportMonitor(name, value, options) {
wx.reportMonitor(name, value, options);
}
export function requestIdleCallback(callback, options) {
return wx.requestIdleCallback(callback, options);
}
export function cancelIdleCallback(handle) {
return wx.cancelIdleCallback(handle);
}
export function getUpdateManager() {
return wx.getUpdateManager();
}
export function updateManagerApplyUpdate(um) {
um.applyUpdate();
}
export function updateManagerOnCheckForUpdate(um, cb) {
um.onCheckForUpdate(cb);
}
export function updateManagerOnUpdateFailed(um, cb) {
um.onUpdateFailed(cb);
}
export function updateManagerOnUpdateReady(um, cb) {
um.onUpdateReady(cb);
}
export function createWorker(scriptPath) {
return wx.createWorker(scriptPath);
}
export function workerGetCameraFrameData(worker) {
return worker.getCameraFrameData();
}
export function workerOnError(worker, cb) {
worker.onError(cb);
}
export function workerOnMessage(worker, cb) {
worker.onMessage(cb);
}
export function workerOnProcessKilled(worker, cb) {
worker.onProcessKilled(cb);
}
export function workerPostMessage(worker, message, transferList) {
worker.postMessage(message, transferList);
}
export function workerTerminate(worker) {
worker.terminate();
}
export function workerTestOnProcessKilled(worker) {
worker.testOnProcessKilled();
}
// Calendar & Contact
export function addPhoneRepeatCalendar(options, cb) {
return new Promise(resolve => {
wx.addPhoneRepeatCalendar({
...options,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function addPhoneCalendar(options, cb) {
return new Promise(resolve => {
wx.addPhoneCalendar({
...options,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function chooseContact(options, cb) {
return new Promise(resolve => {
wx.chooseContact({
...options,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function addPhoneContact(options, cb) {
return new Promise(resolve => {
wx.addPhoneContact({
...options,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
// SMS
export function sendSms(options, cb) {
return new Promise(resolve => {
wx.sendSms({
...options,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
// Encryption (Random)
export function getRandomValues(length) {
wx.getRandomValues({ length });
}
// Advanced Storage (Batch)
export function createBufferURL(buffer) {
return wx.createBufferURL(buffer);
}
export function revokeBufferURL(url) {
wx.revokeBufferURL(url);
}
export function batchSetStorage(items, cb) {
return new Promise(resolve => {
wx.batchSetStorage({
...items,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function batchSetStorageSync(items) {
wx.batchSetStorageSync(items);
}
export function batchGetStorage(keys, cb) {
return new Promise(resolve => {
wx.batchGetStorage({
keyList: keys,
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function batchGetStorageSync(keys) {
return wx.batchGetStorageSync(keys);
}
// Ad Components
export function createInterstitialAd(options) {
return wx.createInterstitialAd(options);
}
export function createRewardedVideoAd(options) {
return wx.createRewardedVideoAd(options);
}
export function interstitialAdDestroy(ad) {
ad.destroy();
}
export function interstitialAdLoad(ad, cb) {
return new Promise(resolve => {
ad.load({
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function interstitialAdOffClose(ad, cb) {
ad.offClose(cb);
}
export function interstitialAdOffError(ad, cb) {
ad.offError(cb);
}
export function interstitialAdOffLoad(ad, cb) {
ad.offLoad(cb);
}
export function interstitialAdOnClose(ad, cb) {
ad.onClose(cb);
}
export function interstitialAdOnError(ad, cb) {
ad.onError(cb);
}
export function interstitialAdOnLoad(ad, cb) {
ad.onLoad(cb);
}
export function interstitialAdShow(ad, cb) {
return new Promise(resolve => {
ad.show({
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function rewardedVideoAdDestroy(ad) {
ad.destroy();
}
export function rewardedVideoAdLoad(ad, cb) {
return new Promise(resolve => {
ad.load({
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function rewardedVideoAdOffClose(ad, cb) {
ad.offClose(cb);
}
export function rewardedVideoAdOffError(ad, cb) {
ad.offError(cb);
}
export function rewardedVideoAdOffLoad(ad, cb) {
ad.offLoad(cb);
}
export function rewardedVideoAdOnClose(ad, cb) {
ad.onClose(cb);
}
export function rewardedVideoAdOnError(ad, cb) {
ad.onError(cb);
}
export function rewardedVideoAdOnLoad(ad, cb) {
ad.onLoad(cb);
}
export function rewardedVideoAdShow(ad, cb) {
return new Promise(resolve => {
ad.show({
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function getShowSplashAdStatus(cb) {
return new Promise(resolve => {
wx.getShowSplashAdStatus({
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
// Background Fetch
export function setBackgroundFetchToken(token) {
wx.setBackgroundFetchToken(token);
}
export function onBackgroundFetchData(cb) {
wx.onBackgroundFetchData(cb);
}
export function getBackgroundFetchToken(cb) {
return new Promise(resolve => {
wx.getBackgroundFetchToken({
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function getBackgroundFetchData(cb) {
return new Promise(resolve => {
wx.getBackgroundFetchData({
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
// Subpackage Pre-download
export function preDownloadSubpackage(rootDir, name) {
return wx.preDownloadSubpackage({ rootDir, name });
}
// User Crypto Manager
export function getUserCryptoManager() {
return wx.getUserCryptoManager();
}
export function userCryptoManagerGetLatestUserKey(manager, cb) {
return new Promise(resolve => {
manager.getLatestUserKey({
complete: cb,
success(res) { resolve(new Ok(res)) },
fail(err) { resolve(new Error(new WechatError(err.errMsg))) }
})
})
}
export function userCryptoManagerGetRandomValues(manager, length) {
return manager.getRandomValues({ length });
}
// Custom Router
export function getRouter() {
return wx.router;
}
export function routerAddRouteBuilder(router, name, builder) {
router.addRouteBuilder(name, builder);
}
export function routerGetRouteContext(router) {
return router.getRouteContext();
}
export function routerRemoveRouteBuilder(router, name) {
router.removeRouteBuilder(name);
}
// App Event Listeners
export function onAppShow(cb) {
wx.onAppShow(cb);
}
export function onAppHide(cb) {
wx.onAppHide(cb);
}
export function onError(cb) {
wx.onError(cb);
}
export function onAudioInterruptionBegin(cb) {
wx.onAudioInterruptionBegin(cb);
}
export function onAudioInterruptionEnd(cb) {
wx.onAudioInterruptionEnd(cb);
}
export function onThemeChange(cb) {
wx.onThemeChange(cb);
}
export function onPageNotFound(cb) {
wx.onPageNotFound(cb);
}
export function onUnhandledRejection(cb) {
wx.onUnhandledRejection(cb);
}
export function onLazyLoadError(cb) {
wx.onLazyLoadError(cb);
}