mirror of https://github.com/VueTubeApp/VueTube
feat: ✨ start new plugin loader (remove storage permissions)
This commit is contained in:
parent
a3eca42539
commit
39cfffef7f
|
@ -1,7 +1,12 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
|
|
||||||
<center v-if="plugins.length == 0">
|
<div style="margin: 1em;">
|
||||||
|
<v-btn style="width: 100%;" class="primary" @click="pickFile()">Load Plugin</v-btn>
|
||||||
|
<input type="file" id="filePicker" accept=".js" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<center v-if="plugins.length == 0" style="margin-top: 2em;">
|
||||||
<v-icon size="50px">mdi-connection</v-icon>
|
<v-icon size="50px">mdi-connection</v-icon>
|
||||||
<h2>No plugins installed</h2>
|
<h2>No plugins installed</h2>
|
||||||
</center>
|
</center>
|
||||||
|
@ -49,6 +54,13 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
#filePicker {
|
||||||
|
visibility: hidden;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
|
@ -58,7 +70,19 @@ export default {
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
async mounted() {
|
async mounted() {
|
||||||
this.plugins = await this.$tppl.list;
|
//this.plugins = await this.$tppl.list;
|
||||||
|
|
||||||
|
document.getElementById('filePicker').onchange = function() {
|
||||||
|
const file = document.getElementById("filePicker").files[0];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
},
|
},
|
||||||
|
methods: {
|
||||||
|
pickFile() {
|
||||||
|
document.getElementById("filePicker").click();
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -18,9 +18,7 @@ const ytApiVal = {
|
||||||
};
|
};
|
||||||
|
|
||||||
const filesystem = {
|
const filesystem = {
|
||||||
plugins: "vuetube/plugins",
|
plugins: "vuetube/plugins"
|
||||||
temp: "vuetube/temp",
|
|
||||||
downloads: "vuetube/downloads",
|
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
|
|
@ -3,14 +3,16 @@ import { Filesystem, Directory, Encoding } from '@capacitor/filesystem';
|
||||||
import { fs } from './constants';
|
import { fs } from './constants';
|
||||||
|
|
||||||
//--- Set Up App Directory ---//
|
//--- Set Up App Directory ---//
|
||||||
const APP_DIRECTORY = Directory.Documents;
|
const APP_DIRECTORY = Directory.Data;
|
||||||
|
|
||||||
|
|
||||||
const ensureStructure = new Promise(async (resolve, reject) => {
|
const ensureStructure = new Promise(async (resolve, reject) => {
|
||||||
|
/*
|
||||||
const perms = await Filesystem.checkPermissions();
|
const perms = await Filesystem.checkPermissions();
|
||||||
if (perms.publicStorage !== "granted") {
|
if (perms.publicStorage !== "granted") {
|
||||||
perms = await Filesystem.requestPermissions();
|
perms = await Filesystem.requestPermissions();
|
||||||
}
|
}
|
||||||
|
// Legacy shit that isnt supported on android 10+ */
|
||||||
|
|
||||||
//--- Ensure Plugins Folder ---//
|
//--- Ensure Plugins Folder ---//
|
||||||
try {
|
try {
|
||||||
|
@ -20,14 +22,6 @@ const ensureStructure = new Promise(async (resolve, reject) => {
|
||||||
});
|
});
|
||||||
} catch (e) { /* Exists */ }
|
} catch (e) { /* Exists */ }
|
||||||
|
|
||||||
//--- Ensure Temp Folder ---//
|
|
||||||
try {
|
|
||||||
await Filesystem.mkdir({
|
|
||||||
directory: APP_DIRECTORY, recursive: true,
|
|
||||||
path: fs.temp,
|
|
||||||
});
|
|
||||||
} catch (e) { /* Exists */ }
|
|
||||||
|
|
||||||
perms
|
perms
|
||||||
? resolve(true)
|
? resolve(true)
|
||||||
: reject(false)
|
: reject(false)
|
||||||
|
@ -44,12 +38,24 @@ const module = {
|
||||||
if (await !ensureStructure) reject("Invalid Structure");
|
if (await !ensureStructure) reject("Invalid Structure");
|
||||||
|
|
||||||
const plugins = await Filesystem.readdir({
|
const plugins = await Filesystem.readdir({
|
||||||
path: "vuetube/plugins/",
|
path: fs.plugins,
|
||||||
directory: APP_DIRECTORY
|
directory: APP_DIRECTORY
|
||||||
});
|
});
|
||||||
resolve(plugins);
|
resolve(plugins);
|
||||||
|
|
||||||
})
|
}),
|
||||||
|
|
||||||
|
debug(path) { return new Promise(async (resolve, reject) => {
|
||||||
|
|
||||||
|
if (await !ensureStructure) reject("Invalid Structure");
|
||||||
|
|
||||||
|
const plugins = await Filesystem.readdir({
|
||||||
|
path: path,
|
||||||
|
directory: APP_DIRECTORY
|
||||||
|
});
|
||||||
|
resolve(plugins);
|
||||||
|
|
||||||
|
})}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8,8 +8,7 @@
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:roundIcon="@mipmap/ic_launcher_round"
|
android:roundIcon="@mipmap/ic_launcher_round"
|
||||||
android:supportsRtl="true"
|
android:supportsRtl="true"
|
||||||
android:theme="@style/AppTheme"
|
android:theme="@style/AppTheme">
|
||||||
android:requestLegacyExternalStorage="true">
|
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode"
|
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode"
|
||||||
|
@ -75,7 +74,5 @@
|
||||||
|
|
||||||
<!-- Permissions -->
|
<!-- Permissions -->
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|
Loading…
Reference in New Issue