+
+
+
+
+ {#if Capacitor.isNativePlatform()}
+
{/if}
-
-
-
-
Invidious
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ arrow_drop_down
+
+
+
+
+
+ arrow_drop_down
+
+
+ {#if !Capacitor.isNativePlatform()}
+
+
{$_('layout.bookmarklet')}
+
+
+ {/if}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {#if Capacitor.getPlatform() === 'android'}
+
+
+
+ {/if}
+
+ {#if Capacitor.isNativePlatform()}
+
+
+
+ {/if}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {#if Capacitor.isNativePlatform()}
+
+
+
+
+
+
+
+ {/if}
+
-
{$_('layout.interface')}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- arrow_drop_down
-
-
-
-
+
+
-
+
+
-
-
-
{$_('layout.player.title')}
-
-
-
-
-
-
-
-
-
-
-
-
-
- {#if Capacitor.getPlatform() === 'android'}
-
-
-
-
-
Return YT Dislikes
-
-
-
-
-
-
-
-
-
-
-
API Extended
-
-
-
-
-
-
-
-
-
-
-
Sponsorblock
-
-
-
-
-
-
-
-
-
-
-
{$_('layout.sponsors.disableToast')}
-
-
-
-
-
-
-
{$_('layout.sponsors.disableTimeline')}
-
-
-
-
-
-
-
{$_('layout.sponsors.Catagories')}
-
- {#each sponsorCategories as sponsor}
-
- {/each}
-
-
-
-
{$_('layout.deArrow.title')}
-
-
-
-
-
-
-
-
{$_('layout.deArrow.titleOnly')}
-
-
-
-
-
-
-
-
-
-
- {#if !Capacitor.isNativePlatform()}
-
-
{$_('layout.bookmarklet')}
-
+
+
+
+
+
+
+
{$_('layout.deArrow.titleOnly')}
+
+
+
+
+
+
+
+
- {/if}
+
diff --git a/materialious/src/lib/externalSettings.ts b/materialious/src/lib/externalSettings.ts
index a64f944f..6625f607 100644
--- a/materialious/src/lib/externalSettings.ts
+++ b/materialious/src/lib/externalSettings.ts
@@ -231,7 +231,7 @@ export function bookmarkletSaveToUrl(): string {
persistedStores.forEach((store) => {
let value = get(store.store);
- if (value !== null) {
+ if (value !== null && value !== undefined) {
url.searchParams.set(store.name, value.toString());
}
});
diff --git a/materialious/src/lib/i18n/locales/en.json b/materialious/src/lib/i18n/locales/en.json
index 79285e02..a2ad1f6a 100644
--- a/materialious/src/lib/i18n/locales/en.json
+++ b/materialious/src/lib/i18n/locales/en.json
@@ -9,6 +9,7 @@
"title": "Title",
"searchPlaceholder": "Search (ctrl + k)",
"delete": "Delete",
+ "donate": "Donate",
"deleteAllHistory": "Delete all history",
"skipping": "Skipping",
"replies": "replies",
diff --git a/materialious/src/routes/(app)/+layout.svelte b/materialious/src/routes/(app)/+layout.svelte
index 331cc5a7..9af4f32c 100644
--- a/materialious/src/routes/(app)/+layout.svelte
+++ b/materialious/src/routes/(app)/+layout.svelte
@@ -86,15 +86,29 @@
// Auth response handling for Mobile
App.addListener('appUrlOpen', (data) => {
- const authUrl = new URL(data.url);
- const username = authUrl.searchParams.get('username');
- const token = authUrl.searchParams.get('token');
+ const url = new URL(data.url);
- if (username && token) {
- authStore.set({
- username: username,
- token: token
- });
+ if (data.url.includes('youtu')) {
+ let videoId = url.searchParams.get('v');
+ if (!videoId) {
+ videoId = url.pathname.split('/')[1];
+ }
+
+ if (!videoId) {
+ return;
+ }
+
+ goto(`/watch/${videoId}`);
+ } else {
+ const username = url.searchParams.get('username');
+ const token = url.searchParams.get('token');
+
+ if (username && token) {
+ authStore.set({
+ username: username,
+ token: token
+ });
+ }
}
});
diff --git a/materialious/static/nodejs-android/package-lock.json b/materialious/static/nodejs-android/package-lock.json
new file mode 100644
index 00000000..2ce1406a
--- /dev/null
+++ b/materialious/static/nodejs-android/package-lock.json
@@ -0,0 +1,54 @@
+{
+ "name": "cors-patch",
+ "version": "0.0.1",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "cors-patch",
+ "version": "0.0.1",
+ "dependencies": {
+ "cors-anywhere": "^0.4.4"
+ }
+ },
+ "node_modules/cors-anywhere": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/cors-anywhere/-/cors-anywhere-0.4.4.tgz",
+ "integrity": "sha512-8OBFwnzMgR4mNrAeAyOLB2EruS2z7u02of2bOu7i9kKYlZG+niS7CTHLPgEXKWW2NAOJWRry9RRCaL9lJRjNqg==",
+ "dependencies": {
+ "http-proxy": "1.11.1",
+ "proxy-from-env": "0.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eventemitter3": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz",
+ "integrity": "sha512-DOFqA1MF46fmZl2xtzXR3MPCRsXqgoFqdXcrCVYM3JNnfUeHTm/fh/v/iU7gBFpwkuBmoJPAm5GuhdDfSEJMJA=="
+ },
+ "node_modules/http-proxy": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.11.1.tgz",
+ "integrity": "sha512-qz7jZarkVG3G6GMq+4VRJPSN4NkIjL4VMTNhKGd8jc25BumeJjWWvnY3A7OkCGa8W1TTxbaK3dcE0ijFalITVA==",
+ "dependencies": {
+ "eventemitter3": "1.x.x",
+ "requires-port": "0.x.x"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/proxy-from-env": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-0.0.1.tgz",
+ "integrity": "sha512-B9Hnta3CATuMS0q6kt5hEezOPM+V3dgaRewkFtFoaRQYTVNsHqUvFXmndH06z3QO1ZdDnRELv5vfY6zAj/gG7A=="
+ },
+ "node_modules/requires-port": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-0.0.1.tgz",
+ "integrity": "sha512-AzPDCliPoWDSvEVYRQmpzuPhGGEnPrQz9YiOEvn+UdB9ixBpw+4IOZWtwctmpzySLZTy7ynpn47V14H4yaowtA=="
+ }
+ }
+}
diff --git a/materialious/static/style.css b/materialious/static/style.css
index 5bffc19d..b20b1599 100644
--- a/materialious/static/style.css
+++ b/materialious/static/style.css
@@ -77,4 +77,4 @@ main.root {
main.root::-webkit-scrollbar {
display: none !important;
}
-}
\ No newline at end of file
+}
diff --git a/update_versions.py b/update_versions.py
index 07cb5de3..966dbd0f 100644
--- a/update_versions.py
+++ b/update_versions.py
@@ -5,7 +5,7 @@ import json
import os
import re
-LATEST_VERSION = "1.6.2"
+LATEST_VERSION = "1.6.3"
WORKING_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), "materialious")
ROOT_PACKAGE = os.path.join(WORKING_DIR, "package.json")