This commit is contained in:
Alex 2022-06-16 12:24:54 +12:00
commit c48086cf86
22 changed files with 422 additions and 167 deletions

View File

@ -6,12 +6,14 @@
*/
export default {
//--- Bettertube Stuff ---//
//--- VueTube Stuff ---//
env: {
appVersion: "dev-local",
},
target: "static",
ssr: false,
plugins: [
{ src: "~/plugins/youtube", mode: "client" },
{ src: "~/plugins/vuetube", mode: "client" },
@ -23,7 +25,7 @@ export default {
dir: "../dist",
},
//--- Bettertube Debugging ---//
//--- VueTube Debugging ---//
server: {
port: 80, // default: 3000 (Note: Running on ports below 1024 requires root privileges!)
host: "0.0.0.0", // default: localhost,
@ -53,8 +55,6 @@ export default {
buildModules: ["@nuxtjs/vuetify"],
modules: [],
ssr: false,
vuetify: {
customVariables: ["~/assets/variables.scss"],
treeShake: true,

View File

@ -1,5 +1,5 @@
{
"name": "bettertube",
"name": "vuetube",
"version": "1.0.0",
"private": true,
"scripts": {

View File

@ -25,12 +25,12 @@ export default {
this.$store.commit("tweaks/initTweaks");
await this.theming;
await this.theming();
await this.$youtube.getAPI();
await this.$vuetube.launchBackHandling();
this.progressMsg = this.$lang("index").launching;
this.$router.replace(`/${localStorage.getItem("startPage") || "home"}`); // Prevent user from navigating back to the splash screen
this.$router.replace('/'+ (localStorage.getItem("startPage") || "home") ); // Prevent user from navigating back to the splash screen
},
methods: {
theming() { return new Promise((resolve) =>

View File

@ -22,9 +22,9 @@
"
:style="{ borderRadius: `${roundTweak / 2}rem` }"
>
<v-card-title>{{ languagePack.mods.about.appinformation }}</v-card-title>
<v-card-title>{{ lang.appinformation }}</v-card-title>
<v-card-text>
<h3>{{ languagePack.mods.about.appversion }}</h3>
<h3>{{ lang.appversion }}</h3>
{{ version.substring(0, 7) || "Unknown" }}
</v-card-text>
</v-card>
@ -40,20 +40,20 @@
:style="{ borderRadius: `${roundTweak / 2}rem` }"
>
<v-card-title>{{
languagePack.mods.about.deviceinformation
lang.deviceinformation
}}</v-card-title>
<v-card-text>
<h3>{{ languagePack.mods.about.platform }}</h3>
<h3>{{ lang.platform }}</h3>
{{ deviceInfo.platform || "Unknown" }}<br />
<h3>{{ languagePack.mods.about.os }}</h3>
<h3>{{ lang.os }}</h3>
{{ deviceInfo.operatingSystem || "Unknown" }} ({{
deviceInfo.osVersion || "Unknown"
}})<br />
<h3>{{ languagePack.mods.about.model }}</h3>
<h3>{{ lang.model }}</h3>
{{ deviceInfo.model || "Unknown" }}<br />
<h3>{{ languagePack.mods.about.manufacturer }}</h3>
<h3>{{ lang.manufacturer }}</h3>
{{ deviceInfo.manufacturer || "Unknown" }}<br />
<h3>{{ languagePack.mods.about.emulator }}</h3>
<h3>{{ lang.emulator }}</h3>
{{ deviceInfo.isVirtual ? "yes" : "no" }}
</v-card-text>
</v-card>
@ -71,7 +71,7 @@
@click="openExternal('https://github.com/Frontesque/VueTube')"
>
<v-icon x-large class="actionIcon">mdi-github</v-icon>
{{ languagePack.mods.about.github }}
{{ lang.github }}
</v-btn>
<v-btn
depressed
@ -83,7 +83,7 @@
@click="openExternal('https://discord.gg/7P8KJrdd5W')"
>
<v-icon x-large class="actionIcon">mdi-discord</v-icon>
{{ languagePack.mods.about.discord }}
{{ lang.discord }}
</v-btn>
</div>
</div>
@ -98,7 +98,7 @@ export default {
return {
version: process.env.appVersion,
deviceInfo: "",
languagePack: { mods: { about: {} } },
lang: {},
};
},
computed: {
@ -111,7 +111,7 @@ export default {
const info = await Device.getInfo();
this.deviceInfo = info;
this.languagePack = this.$lang();
this.lang = this.$lang().mods.about;
},
methods: {
async openExternal(url) {

View File

@ -0,0 +1,70 @@
<template>
<div class="mainContainer pt-1">
<v-card flat class="pb-5 background" :class="$vuetify.theme.dark ? 'lighten-1' : 'darken-1'" :style="{borderRadius: `${roundTweak / 2}rem`}">
<v-card-title>{{ lang.language }}</v-card-title>
<v-card-text>
<v-select v-model="selectedLang" background-color="background" :items="langs" label="App Language" solo></v-select>
</v-card-text>
</v-card>
</div>
</template>
<script>
export default {
computed: {
roundTweak() {
return this.$store.state.tweaks.roundTweak;
},
},
data() {
return {
langs: [],
lang: { mods: { general: { language: "" } } },
selectedLang: null
};
},
watch: {
//--- Update Stored Language Value ---//
selectedLang: function (newVal) {
const langs = this.$lang(null, true);
let lang = new String();
for (const i in langs) {
if (langs[i].name == newVal) {
lang = i;
console.log(lang)
}
}
localStorage.setItem("language", lang);
},
//--- End Update Stored Language Value ---//
},
mounted() {
const lang = this.$lang(); this.lang = lang.mods.general;
const langs = this.$lang(null, true);
for (const i in langs) {
this.langs.push(langs[i].name);
}
this.selectedLang = this.$lang().name;
}
};
</script>
<style scoped>
.v-card {
margin: 1em;
}
section {
padding: 0 1em 1em 1em;
}
</style>

View File

@ -25,7 +25,7 @@
:class="$vuetify.theme.dark ? 'lighten-1' : 'darken-1'"
:style="{borderRadius: `${roundTweak / 2}rem`}"
>
<v-expansion-panel-header>More</v-expansion-panel-header>
<v-expansion-panel-header>{{ lang.more }}</v-expansion-panel-header>
<v-expansion-panel-content class="logContent" v-text="item.data" />
</v-expansion-panel>
</v-expansion-panels>
@ -63,11 +63,14 @@ export default {
data() {
return {
logs: new Array(),
lang: {}
};
},
mounted() {
const logs = this.$youtube.logs;
this.logs = logs;
this.lang = this.$lang("mods").logs
},
};
</script>

View File

@ -49,7 +49,7 @@
class="pa-4 ma-2 rounded-lg"
:value="$vuetify.theme.dark ? adaptiveDark : adaptiveLight"
/>
Adaptive
{{ lang.adaptive }}
</div>
<div class="text-center">
<!-- Custom Background -->
@ -142,13 +142,13 @@
"
>
<div class="my-auto">
<div>Dark Mode</div>
<div>{{ lang.darkmode }}</div>
<div
class="background--text"
:class="$vuetify.theme.dark ? 'text--lighten-4' : 'text--darken-4'"
style="font-size: 0.75rem; margin-top: -0.25rem !important"
>
Bravo Six, Going Dark.
{{ lang.darkmodetagline }}
</div>
</div>
<v-spacer />
@ -186,8 +186,15 @@ export default {
adaptiveDark: "",
pickerState: false,
pickerMode: "bg",
lang: {}
};
},
mounted() {
this.lang = this.$lang("mods").theme;
this.backgroundsLight[0].name = this.lang.normal;
this.backgroundsDark[0].name = this.lang.dark;
this.backgroundsDark[1].name = this.lang.black;
},
watch: {
// also triggers background and primary watcher, unless primary colors match
"$vuetify.theme.dark"(value) {

View File

@ -25,7 +25,7 @@
class="my-auto background--text"
:class="$vuetify.theme.dark ? 'text--lighten-3' : 'text--darken-3'"
>
Fullscreen (Soon)
{{ lang.fullscreen }}
</h3>
<v-spacer />
<v-switch
@ -54,7 +54,7 @@
class="my-auto background--text"
:class="$vuetify.theme.dark ? 'text--lighten-3' : 'text--darken-3'"
>
Navbar Blur (Soon)
{{ lang.navbarblur }}
</h3>
<v-spacer />
<v-switch
@ -68,7 +68,7 @@
<v-divider v-if="!roundTweak" />
<h3 class="ml-8 mt-8">Rounded Corners</h3>
<h3 class="ml-8 mt-8">{{ lang.roundedcorners }}</h3>
<v-card
flat
@ -100,7 +100,7 @@
class="my-auto background--text"
:class="$vuetify.theme.dark ? 'text--lighten-4' : 'text--darken-4'"
>
Round Thumbnails
{{ lang.roundthumbnails }}
</div>
<v-spacer />
<v-switch
@ -128,7 +128,7 @@
class="my-auto background--text"
:class="$vuetify.theme.dark ? 'text--lighten-4' : 'text--darken-4'"
>
Round Watch Page Components
{{ lang.roundwatchpagecomponents }}
</div>
<v-spacer />
<v-switch
@ -143,7 +143,7 @@
v-model="roundTweak"
class="pr-4 pl-4 pt-4 pb-1 background"
:max="4"
label="Radius"
:label="lang.radius"
step=".25"
thumb-size="64"
:class="
@ -167,6 +167,14 @@
<script>
export default {
data() {
return {
lang: {}
}
},
mounted() {
this.lang = this.$lang("mods").tweaks
},
computed: {
roundTweak: {
get() {

View File

@ -26,14 +26,14 @@
</div>
<v-card-actions>
<v-chip v-if="index == 0" class="tags" color="orange" style="border-radius: 0.5rem; border: 2px var(--v-orange-base)">Latest</v-chip>
<v-chip v-if="item.sha == installedVersion" class="tags" color="green" style="border-radius: 0.5rem; border: 2px var(--v-green-base)">Installed</v-chip>
<v-chip v-if="index == 0" class="tags" color="orange" style="border-radius: 0.5rem; border: 2px var(--v-orange-base)">{{ lang.latest }}</v-chip>
<v-chip v-if="item.sha == installedVersion" class="tags" color="green" style="border-radius: 0.5rem; border: 2px var(--v-green-base)">{{ lang.installed }}</v-chip>
<v-spacer />
<v-btn @click="openExternal(item)" class="background">
<v-icon class="btn-icon">mdi-github</v-icon>View
<v-icon class="btn-icon">mdi-github</v-icon>{{ lang.view }}
</v-btn>
<v-btn disabled @click="install(item)">
<v-icon class="btn-icon">mdi-download</v-icon>Install
<v-icon class="btn-icon">mdi-download</v-icon>{{ lang.install }}
</v-btn>
</v-card-actions>
</v-card>
@ -78,6 +78,7 @@ export default {
return {
commits: new Array(),
installedVersion: process.env.appVersion,
lang: {}
};
},
async mounted() {
@ -88,6 +89,8 @@ export default {
} else {
console.log(commits);
}
this.lang = this.$lang("mods").updates;
},
methods: {
async openExternal(item) {

View File

@ -78,8 +78,7 @@ export default {
{
name: "General",
icon: "mdi-cog",
to: "",
disabled: true,
to: "/mods/general"
},
{
name: "Theme",
@ -105,7 +104,8 @@ export default {
{
name: "Plugins",
icon: "mdi-puzzle",
to: "/mods/plugins"
to: "/mods/plugins",
disabled: true,
},
{
name: "Updates",

View File

@ -1,4 +1,17 @@
function module(text) {
const packs = {
english: require('./languages/english'),
spanish: require('./languages/spanish'),
italian: require('./languages/italian'),
polish: require('./languages/polish'),
"chinese-traditional": require('./languages/chinese-traditional')
}
function module(text, listPacks) {
//--- List All Packs ---//
if (listPacks === true) return packs;
//--- Return Language Pack ---//
const selectedLanguage = localStorage.getItem("language") || "english";
const languagePack = require('./languages/'+selectedLanguage);

View File

@ -0,0 +1,84 @@
module.exports = {
name: "中文繁體",
global: {
home: "主頁",
subscriptions: "訂閲項目",
library: "媒體庫"
},
index: {
connecting: "連接中",
launching: "啟動中"
},
settings: {
general: "一般",
theme: "主題",
player: "播放器",
uitweaker: "界面調較",
startupoptions: "啟動選項",
plugins: "插件",
updates: "更新",
logs: "日誌",
about: "關於",
devmode: "登錄檔編輯"
},
mods: {
general: {
language: "語言"
},
theme: {
normal: "Normal",
adaptive: "Adaptive",
custom: "Custom",
dark: "Dark",
black: "Black",
darkmode: "Dark Mode",
darkmodetagline: "Bravo Six, Going Dark."
},
tweaks: {
fullscreen: "Fullscreen",
navbarblur: "Navbar Blur",
roundedcorners: "Rounded Corners",
roundthumbnails: "Round Thumbnails",
roundwatchpagecomponents: "Round Watch PAge Components",
radius: "Radius"
},
startup: {
defaultpage: "默認頁"
},
updates: {
install: "Install",
view: "View",
latest: "Latest",
installed: "Installed"
},
logs: {
more: "More"
},
about: {
appinformation: "程式資訊",
appversion: "程式版本",
deviceinformation: "裝置資訊",
platform: "平台",
os: "作業系統",
model: "型號",
manufacturer: "製造商",
emulator: "模擬器",
github: "GitHub",
discord: "Discord"
}
},
events: {
welcome: "歡迎來到 VueTube",
tagline: "流媒體的未來",
next: "下一個",
updated: "VueTube 已更新!",
awesome: "真棒!"
}
}

View File

@ -26,9 +26,38 @@ module.exports = {
},
mods: {
general: {
language: "Language"
},
theme: {
normal: "Normal",
adaptive: "Adaptive",
custom: "Custom",
dark: "Dark",
black: "Black",
darkmode: "Dark Mode",
darkmodetagline: "Bravo Six, Going Dark."
},
tweaks: {
fullscreen: "Fullscreen",
navbarblur: "Navbar Blur",
roundedcorners: "Rounded Corners",
roundthumbnails: "Round Thumbnails",
roundwatchpagecomponents: "Round Watch Page Components",
radius: "Radius"
},
startup: {
defaultpage: "Default Page"
},
updates: {
install: "Install",
view: "View",
latest: "Latest",
installed: "Installed"
},
logs: {
more: "More"
},
about: {
appinformation: "App Information",
appversion: "App Version",

View File

@ -1,5 +1,5 @@
module.exports = {
name: "Italian",
name: "Italiano",
global: {
home: "Casa",
@ -26,9 +26,39 @@ module.exports = {
},
mods: {
general: {
language: "Lingua"
},
theme: {
normal: "Normale",
adaptive: "Adattabile",
custom: "Abitudine",
dark: "Buio",
black: "Nero",
darkmode: "Modalità scura",
darkmodetagline: "Bravo Six, Going Dark."
},
tweaks: {
fullscreen: "A Schermo Intero",
navbarblur: "Navbar Blur", // Note From Front: As a native english speaker, i don't know this one
roundedcorners: "Spigolo Tondeggiante",
roundthumbnails: "Anteprima Tondeggiante",
roundwatchpagecomponents: "Componenti Rotondi Della Pagina Di Controllo",
radius: "Raggio"
},
startup: {
defaultpage: "Pagina Predefinita"
},
updates: {
install: "Ultimo",
view: "Visionare",
latest: "Più Recente",
installed: "Installare"
},
logs: {
more: "Più"
},
about: {
appinformation: "Informazioni Applicazione",
appversion: "Versione Applicazione",
@ -44,10 +74,10 @@ module.exports = {
},
events: {
welcome: "Welcome to VueTube",
tagline: "The future of video streaming",
welcome: "Benvenuto su VueTube",
tagline: "Il Futuro Dello Streaming Video",
next: "Prossimo",
updated: "VueTube Was Updated!",
updated: "VueTube e Stato Aggiornato",
awesome: "Imponente!"
}

View File

@ -1,5 +1,5 @@
module.exports = {
name: "Polish",
name: "Polski",
global: {
home: "Główna",
@ -26,13 +26,43 @@ module.exports = {
},
mods: {
general: {
language: "Język"
},
theme: {
normal: "Normalny",
adaptive: "Adaptacyjny",
custom: "Custom",
dark: "Ciemny",
black: "Czarny",
darkmode: "Tryb Ciemny",
darkmodetagline: "Brawo ty, przejdź na ciemną stronę mocy."
},
tweaks: {
fullscreen: "Pełny Ekran",
navbarblur: "Rozmycie Paska Nawigacyjnego",
roundedcorners: "Zaokrąglone Krawędzie",
roundthumbnails: "Zaokrąglone Miniaturki",
roundwatchpagecomponents: "Round Watch PAge Components",
radius: "Radius"
},
startup: {
defaultpage: "Strona Domyślna",
},
updates: {
install: "Install",
view: "Zobacz",
latest: "Najnowsza",
installed: "Zainstalowana"
},
logs: {
more: "Więcej"
},
about: {
appinformation: "Informacje O Aplikacji",
appinformation: "Informacje o aplikacji",
appversion: "Wersja Aplikacji",
deviceinformation: "Informacje O Urządzeniu",
deviceinformation: "Informacje o Urządzeniu",
platform: "Platforma",
os: "System Operacyjny",
model: "Model",
@ -45,8 +75,8 @@ module.exports = {
events: {
welcome: "Witaj w VueTube",
tagline: "Przyszłość Streamingu Wideo",
next: "DALEJ",
tagline: "Przyszłośći Streamingu Wideo",
next: "Dalej",
updated: "VueTube został zaktualizowany!",
awesome: "Świetnie!",
},

View File

@ -0,0 +1,85 @@
module.exports = {
name: "Español",
global: {
home: "Inicio",
subscriptions: "Suscripciones",
library: "Librería"
},
index: {
connecting: "Conectando",
launching: "Iniciando"
},
settings: {
general: "General",
theme: "Tema",
player: "Reproductor",
uitweaker: "Interfaz",
startupoptions: "Opciones de inicio",
plugins: "Complementos",
updates: "Actualizaciones",
logs: "Logs",
about: "Acerca de",
devmode: "Editor del registro"
},
mods: {
general: {
language: "Idioma"
},
theme: {
normal: "Normal",
adaptive: "Adaptado",
custom: "Personalizado",
dark: "Oscuro",
black: "Negro",
darkmode: "Modo oscuro",
darkmodetagline: "Bravo Six, haciéndote oscuro."
},
tweaks: {
fullscreen: "Pantalla completa",
navbarblur: "Desenfocar barra",
roundedcorners: "Esquinas redondeadas",
roundthumbnails: "Redondear miniaturas",
roundwatchpagecomponents: "Redondear componentes del vídeo",
radius: "Radio"
},
startup: {
defaultpage: "Pagina predeterminada"
},
updates: {
install: "Instalar",
view: "Ver",
latest: "Última",
installed: "Instalada"
},
logs: {
more: "Más"
},
about: {
appinformation: "Información de la app",
appversion: "Versión de la app",
deviceinformation: "Información del dispositivo",
platform: "Plataforma",
os: "Sistema operativo",
model: "Modelo",
manufacturer: "Fabricante",
emulator: "Emulador",
github: "GitHub",
discord: "Discord"
}
},
events: {
welcome: "¡Bienvenido a VueTube!",
tagline: "El futuro del streaming de vídeo",
next: "Siguiente",
updated: "¡VueTube se ha actualizado!",
awesome: "¡Increíble!"
}
}

View File

@ -22,7 +22,7 @@ const module = {
//--- List Plugins ---//
list: new Promise(async (resolve, reject) => {
await ensureStructure();
await ensureStructure;
const plugins = await Filesystem.readdir({
path: fs.plugins,
@ -35,7 +35,7 @@ const module = {
async addPlugin(content) {
await ensureStructure();
await ensureStructure;
new Promise(async (resolve, reject) => {
const fileName = require("./utils").getCpn(); // Im not sure what this is actually meant for but im using it as a random string generator
console.log("Saving Plugin As"+ fileName)

View File

@ -2,9 +2,5 @@
<widget version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<access origin="*" />
<feature name="CDVOrientation">
<param name="android-package" value="cordova.plugins.screenorientation.CDVOrientation"/>
</feature>
</widget>

View File

@ -1,98 +0,0 @@
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
package cordova.plugins.screenorientation;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.util.Log;
public class CDVOrientation extends CordovaPlugin {
private static final String TAG = "YoikScreenOrientation";
/**
* Screen Orientation Constants
*/
private static final String ANY = "any";
private static final String PORTRAIT_PRIMARY = "portrait-primary";
private static final String PORTRAIT_SECONDARY = "portrait-secondary";
private static final String LANDSCAPE_PRIMARY = "landscape-primary";
private static final String LANDSCAPE_SECONDARY = "landscape-secondary";
private static final String PORTRAIT = "portrait";
private static final String LANDSCAPE = "landscape";
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) {
Log.d(TAG, "execute action: " + action);
// Route the Action
if (action.equals("screenOrientation")) {
return routeScreenOrientation(args, callbackContext);
}
// Action not found
callbackContext.error("action not recognised");
return false;
}
private boolean routeScreenOrientation(JSONArray args, CallbackContext callbackContext) {
String action = args.optString(0);
String orientation = args.optString(1);
Log.d(TAG, "Requested ScreenOrientation: " + orientation);
Activity activity = cordova.getActivity();
if (orientation.equals(ANY)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
} else if (orientation.equals(LANDSCAPE_PRIMARY)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else if (orientation.equals(PORTRAIT_PRIMARY)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else if (orientation.equals(LANDSCAPE)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
} else if (orientation.equals(PORTRAIT)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
} else if (orientation.equals(LANDSCAPE_SECONDARY)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
} else if (orientation.equals(PORTRAIT_SECONDARY)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
}
callbackContext.success();
return true;
}
}

View File

@ -2,9 +2,5 @@
<widget version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<access origin="*" />
<feature name="CDVOrientation">
<param name="ios-package" value="CDVOrientation"/>
</feature>
</widget>

View File

@ -9,18 +9,17 @@ install! 'cocoapods', :disable_input_output_paths => true
def capacitor_pods
pod 'Capacitor', :path => '../../node_modules/@capacitor/ios'
pod 'CapacitorCordova', :path => '../../node_modules/@capacitor/ios'
pod 'CapacitorCommunityHttp', :path => '../../node_modules/@capacitor-community/http'
pod 'CapacitorApp', :path => '../../node_modules/@capacitor/app'
pod 'CapacitorBrowser', :path => '../../node_modules/@capacitor/browser'
pod 'CapacitorDevice', :path => '../../node_modules/@capacitor/device'
pod 'CapacitorFilesystem', :path => '../../node_modules/@capacitor/filesystem'
pod 'CapacitorHaptics', :path => '../../node_modules/@capacitor/haptics'
pod 'CapacitorShare', :path => '../../node_modules/@capacitor/share'
pod 'CapacitorSplashScreen', :path => '../../node_modules/@capacitor/splash-screen'
pod 'CapacitorStatusBar', :path => '../../node_modules/@capacitor/status-bar'
pod 'CapacitorToast', :path => '../../node_modules/@capacitor/toast'
pod 'HugotomaziCapacitorNavigationBar', :path => '../../node_modules/@hugotomazi/capacitor-navigation-bar'
pod 'CordovaPlugins', :path => '../capacitor-cordova-ios-plugins'
pod 'CapacitorCommunityHttp', :path => '..\..\node_modules\@capacitor-community\http'
pod 'CapacitorApp', :path => '..\..\node_modules\@capacitor\app'
pod 'CapacitorBrowser', :path => '..\..\node_modules\@capacitor\browser'
pod 'CapacitorDevice', :path => '..\..\node_modules\@capacitor\device'
pod 'CapacitorFilesystem', :path => '..\..\node_modules\@capacitor\filesystem'
pod 'CapacitorHaptics', :path => '..\..\node_modules\@capacitor\haptics'
pod 'CapacitorShare', :path => '..\..\node_modules\@capacitor\share'
pod 'CapacitorSplashScreen', :path => '..\..\node_modules\@capacitor\splash-screen'
pod 'CapacitorStatusBar', :path => '..\..\node_modules\@capacitor\status-bar'
pod 'CapacitorToast', :path => '..\..\node_modules\@capacitor\toast'
pod 'HugotomaziCapacitorNavigationBar', :path => '..\..\node_modules\@hugotomazi\capacitor-navigation-bar'
end
target 'App' do

View File

@ -3,7 +3,7 @@
<img src="https://cdn.discordapp.com/attachments/751596360108605500/980418672331988992/VueTube_Dark.svg" alt="VueTube icon" width="500"/>
</a>
</br>
<sub>Logo por <a href="https://github.com/afnzmn">@afnzmn</a></sub>
<sub>Logo por <a href="https://github.com/afnzmn">@afnzmn</a>, traducción por <a href="https://github.com/gayolgate">@gayolgate</a></sub>
</br>
</br>
<strong>Un cliente sencillo de streaming de vídeo FOSS diseñado para recrear TODAS las características de sus respectivas aplicaciones (y más) </strong>