0
0
Fork 0
mirror of https://github.com/VueTubeApp/VueTube synced 2024-11-01 09:22:39 +00:00
VueTube/NUXT/plugins/vuetube.js

140 lines
3.3 KiB
JavaScript
Raw Normal View History

2022-03-07 14:36:23 +00:00
//--- Modules/Imports ---//
2022-03-21 23:47:11 +00:00
import { Http } from "@capacitor-community/http";
import { StatusBar, Style } from "@capacitor/status-bar";
import { NavigationBar } from "@hugotomazi/capacitor-navigation-bar";
2022-03-21 23:47:11 +00:00
import constants from "./constants";
2022-04-13 10:15:26 +00:00
import { hexToRgb, rgbToHex, parseEmoji } from "./utils";
2022-03-31 23:33:39 +00:00
import { Haptics, ImpactStyle } from "@capacitor/haptics";
2022-04-13 10:15:26 +00:00
import Vue from "vue";
2022-05-02 04:01:48 +00:00
import backHandler from "./classes/backHander";
2022-04-13 10:15:26 +00:00
Vue.directive("emoji", {
inserted: function (el) {
const twemojiParse = parseEmoji(el.innerHTML);
if (twemojiParse) el.innerHTML = twemojiParse;
},
});
2022-03-07 14:36:23 +00:00
2022-05-02 04:01:48 +00:00
let backActions = new backHandler();
2022-03-07 14:36:23 +00:00
const module = {
2022-03-21 23:47:11 +00:00
//--- Get GitHub Commits ---//
commits: new Promise((resolve, reject) => {
Http.request({
method: "GET",
url: `${constants.URLS.VT_GITHUB}/commits`,
params: {},
})
.then((res) => {
resolve(res.data);
})
.catch((err) => {
reject(err);
});
}),
2022-03-07 14:36:23 +00:00
2022-03-21 23:47:11 +00:00
getRuns(item, callback) {
let url = `${constants.URLS.VT_GITHUB}/commits/${item.sha}/check-runs`;
2022-03-21 23:47:11 +00:00
Http.request({
method: "GET",
url: url,
params: {},
})
.then((res) => {
callback(res.data);
})
.catch((err) => {
callback(err);
});
},
2022-03-31 23:33:39 +00:00
haptics: {
async hapticsImpactHeavy(x) {
await Haptics.impact({ style: ImpactStyle.Heavy, duration: x });
},
async hapticsImpactMedium(x) {
await Haptics.impact({ style: ImpactStyle.Medium, duration: x });
},
async hapticsImpactLight(x) {
await Haptics.impact({ style: ImpactStyle.Light, duration: x });
},
async hapticsVibrate(x) {
await Haptics.vibrate(x);
},
},
2022-03-21 23:47:11 +00:00
statusBar: {
async hide() {
return await StatusBar.hide();
2022-03-18 11:49:47 +00:00
},
2022-03-21 23:47:11 +00:00
async show() {
return await StatusBar.show();
2022-03-18 11:49:47 +00:00
},
2022-03-21 23:47:11 +00:00
async setLight() {
return await StatusBar.setStyle({ style: Style.Light });
},
async setDark() {
return await StatusBar.setStyle({ style: Style.Dark });
},
async setTransparent() {
return StatusBar.setOverlaysWebView({ overlay: true });
},
async setBackground(color) {
return await StatusBar.setBackgroundColor({ color });
2022-03-21 23:47:11 +00:00
},
async setTheme(color, dark) {
2022-03-31 04:22:24 +00:00
dark
? StatusBar.setStyle({ style: Style.Dark })
: StatusBar.setStyle({ style: Style.Light });
StatusBar.setBackgroundColor({ color });
2022-03-31 04:22:24 +00:00
},
2022-03-21 23:47:11 +00:00
},
2022-03-18 11:49:47 +00:00
navigationBar: {
async hide() {
return await NavigationBar.hide();
},
async show() {
return await NavigationBar.show();
},
2022-03-31 04:22:24 +00:00
async setTheme(color, darkButtons) {
return await NavigationBar.setColor({ color, darkButtons });
},
async setTransparent() {
return NavigationBar.setTransparency({ isTransparent: true });
},
},
2022-03-21 23:47:11 +00:00
hexToRgb(hex) {
return hexToRgb(hex);
},
rgbToHex(r, g, b) {
return rgbToHex(r, g, b);
},
2022-05-02 04:01:48 +00:00
resetBackActions() {
backActions = new backHandler();
},
addBackAction(callback, condition = true) {
backActions.addAction(() => {
if (condition) {
callback();
return true
} else {
return false
}
});
},
back(listenerFunc) {
backActions.back(listenerFunc);
}
2022-03-21 23:47:11 +00:00
};
2022-03-07 14:36:23 +00:00
//--- Start ---//
export default ({ app }, inject) => {
2022-03-21 23:47:11 +00:00
inject("vuetube", module);
};