diff --git a/Dotnet/AppApi/AppApi.cs b/Dotnet/AppApi/AppApi.cs index e90d3160..bed870cb 100644 --- a/Dotnet/AppApi/AppApi.cs +++ b/Dotnet/AppApi/AppApi.cs @@ -148,10 +148,15 @@ namespace VRCX VRCXVR.Instance.Restart(); } - public void SetZoom(int zoomLevel) + public void SetZoom(double zoomLevel) { MainForm.Instance.Browser.SetZoomLevel(zoomLevel); } + + public async Task GetZoom() + { + return await MainForm.Instance.Browser.GetZoomLevelAsync(); + } /// /// Retrieves an image from the VRChat API and caches it for future use. The function will return the cached image if it already exists. diff --git a/html/package-lock.json b/html/package-lock.json index 594e6f25..e2d0bf62 100644 --- a/html/package-lock.json +++ b/html/package-lock.json @@ -4,6 +4,7 @@ "requires": true, "packages": { "": { + "name": "html", "license": "MIT", "devDependencies": { "@babel/eslint-parser": "^7.23.3", @@ -25,7 +26,7 @@ "normalize.css": "^8.0.1", "noty": "^3.2.0-beta-deprecated", "prettier": "^3.2.2", - "pug": "^3.0.2", + "pug": "^3.0.3", "pug-plain-loader": "^1.1.0", "raw-loader": "^4.0.2", "sass": "^1.69.7", @@ -34,7 +35,7 @@ "vue-data-tables": "^3.4.5", "vue-i18n": "^8.28.2", "vue-lazyload": "^1.3.4", - "vue-markdown": "^2.2.4", + "vue-markdown": "^2.1.3", "vue-marquee-text-component": "^1.2.0", "webpack": "^5.89.0", "webpack-cli": "^5.1.4", @@ -3896,17 +3897,6 @@ "he": "bin/he" } }, - "node_modules/highlight.js": { - "version": "9.18.5", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.5.tgz", - "integrity": "sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA==", - "deprecated": "Support has ended for 9.x series. Upgrade to @latest", - "dev": true, - "hasInstallScript": true, - "engines": { - "node": "*" - } - }, "node_modules/html-minifier-terser": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", @@ -4541,12 +4531,6 @@ "integrity": "sha512-E32m0nV9iyhRR7CrhnzL5msqic7rL1juWre6TQNxsnApg7Uf+F97JOKxUijg5YwXz86lZ0mqfOnutoryyNdntQ==", "dev": true }, - "node_modules/markdown-it-task-lists": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/markdown-it-task-lists/-/markdown-it-task-lists-2.1.1.tgz", - "integrity": "sha512-TxFAc76Jnhb2OUu+n3yz9RMu4CwGfaT788br6HhEDlvWfdeJcLUsxk1Hgw2yJio0OXsxv7pyIPmvECY7bMbluA==", - "dev": true - }, "node_modules/markdown-it-toc-and-anchor": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/markdown-it-toc-and-anchor/-/markdown-it-toc-and-anchor-4.2.0.tgz", @@ -5148,12 +5132,12 @@ } }, "node_modules/pug": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", - "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.3.tgz", + "integrity": "sha512-uBi6kmc9f3SZ3PXxqcHiUZLmIXgfgWooKWXcwSGwQd2Zi5Rb0bT14+8CJjJgI8AB+nndLaNgHGrcc6bPIB665g==", "dev": true, "dependencies": { - "pug-code-gen": "^3.0.2", + "pug-code-gen": "^3.0.3", "pug-filters": "^4.0.0", "pug-lexer": "^5.0.1", "pug-linker": "^4.0.0", @@ -5175,25 +5159,25 @@ } }, "node_modules/pug-code-gen": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz", - "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.3.tgz", + "integrity": "sha512-cYQg0JW0w32Ux+XTeZnBEeuWrAY7/HNE6TWnhiHGnnRYlCgyAUPoyh9KzCMa9WhcJlJ1AtQqpEYHc+vbCzA+Aw==", "dev": true, "dependencies": { "constantinople": "^4.0.1", "doctypes": "^1.1.0", "js-stringify": "^1.0.2", "pug-attrs": "^3.0.0", - "pug-error": "^2.0.0", - "pug-runtime": "^3.0.0", + "pug-error": "^2.1.0", + "pug-runtime": "^3.0.1", "void-elements": "^3.1.0", "with": "^7.0.0" } }, "node_modules/pug-error": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", - "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.1.0.tgz", + "integrity": "sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg==", "dev": true }, "node_modules/pug-filters": { @@ -6223,12 +6207,11 @@ "dev": true }, "node_modules/vue-markdown": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/vue-markdown/-/vue-markdown-2.2.4.tgz", - "integrity": "sha512-hoTX/W1UIdHZrp/b0vpHSsJXAEfWsafaQLgtE2VX4gY8O/C3L2Gabqu95gyG429rL4ML1SwGv+xsPABX7yfFIQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/vue-markdown/-/vue-markdown-2.1.3.tgz", + "integrity": "sha512-Vox12a4WY58Hfbvb8OHB2l6lkcl9lOpYPqN0dpEjYApDjMX8N9j7IzWmHcolX+OfT6240mvPoyccZb38UeTHKA==", "dev": true, "dependencies": { - "highlight.js": "^9.12.0", "markdown-it": "^6.0.1", "markdown-it-abbr": "^1.0.3", "markdown-it-deflist": "^2.0.1", @@ -6239,8 +6222,7 @@ "markdown-it-mark": "^2.0.0", "markdown-it-sub": "^1.0.0", "markdown-it-sup": "^1.0.0", - "markdown-it-task-lists": "^2.0.1", - "markdown-it-toc-and-anchor": "^4.1.2" + "markdown-it-toc-and-anchor": "^4.1.1" } }, "node_modules/vue-marquee-text-component": { @@ -9333,12 +9315,6 @@ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, - "highlight.js": { - "version": "9.18.5", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.5.tgz", - "integrity": "sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA==", - "dev": true - }, "html-minifier-terser": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", @@ -9845,12 +9821,6 @@ "integrity": "sha512-E32m0nV9iyhRR7CrhnzL5msqic7rL1juWre6TQNxsnApg7Uf+F97JOKxUijg5YwXz86lZ0mqfOnutoryyNdntQ==", "dev": true }, - "markdown-it-task-lists": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/markdown-it-task-lists/-/markdown-it-task-lists-2.1.1.tgz", - "integrity": "sha512-TxFAc76Jnhb2OUu+n3yz9RMu4CwGfaT788br6HhEDlvWfdeJcLUsxk1Hgw2yJio0OXsxv7pyIPmvECY7bMbluA==", - "dev": true - }, "markdown-it-toc-and-anchor": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/markdown-it-toc-and-anchor/-/markdown-it-toc-and-anchor-4.2.0.tgz", @@ -10274,12 +10244,12 @@ } }, "pug": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", - "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.3.tgz", + "integrity": "sha512-uBi6kmc9f3SZ3PXxqcHiUZLmIXgfgWooKWXcwSGwQd2Zi5Rb0bT14+8CJjJgI8AB+nndLaNgHGrcc6bPIB665g==", "dev": true, "requires": { - "pug-code-gen": "^3.0.2", + "pug-code-gen": "^3.0.3", "pug-filters": "^4.0.0", "pug-lexer": "^5.0.1", "pug-linker": "^4.0.0", @@ -10301,25 +10271,25 @@ } }, "pug-code-gen": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz", - "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.3.tgz", + "integrity": "sha512-cYQg0JW0w32Ux+XTeZnBEeuWrAY7/HNE6TWnhiHGnnRYlCgyAUPoyh9KzCMa9WhcJlJ1AtQqpEYHc+vbCzA+Aw==", "dev": true, "requires": { "constantinople": "^4.0.1", "doctypes": "^1.1.0", "js-stringify": "^1.0.2", "pug-attrs": "^3.0.0", - "pug-error": "^2.0.0", - "pug-runtime": "^3.0.0", + "pug-error": "^2.1.0", + "pug-runtime": "^3.0.1", "void-elements": "^3.1.0", "with": "^7.0.0" } }, "pug-error": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", - "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.1.0.tgz", + "integrity": "sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg==", "dev": true }, "pug-filters": { @@ -11049,12 +11019,11 @@ "dev": true }, "vue-markdown": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/vue-markdown/-/vue-markdown-2.2.4.tgz", - "integrity": "sha512-hoTX/W1UIdHZrp/b0vpHSsJXAEfWsafaQLgtE2VX4gY8O/C3L2Gabqu95gyG429rL4ML1SwGv+xsPABX7yfFIQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/vue-markdown/-/vue-markdown-2.1.3.tgz", + "integrity": "sha512-Vox12a4WY58Hfbvb8OHB2l6lkcl9lOpYPqN0dpEjYApDjMX8N9j7IzWmHcolX+OfT6240mvPoyccZb38UeTHKA==", "dev": true, "requires": { - "highlight.js": "^9.12.0", "markdown-it": "^6.0.1", "markdown-it-abbr": "^1.0.3", "markdown-it-deflist": "^2.0.1", @@ -11065,8 +11034,7 @@ "markdown-it-mark": "^2.0.0", "markdown-it-sub": "^1.0.0", "markdown-it-sup": "^1.0.0", - "markdown-it-task-lists": "^2.0.1", - "markdown-it-toc-and-anchor": "^4.1.2" + "markdown-it-toc-and-anchor": "^4.1.1" } }, "vue-marquee-text-component": { diff --git a/html/package.json b/html/package.json index 9091d3c1..7507ad5e 100644 --- a/html/package.json +++ b/html/package.json @@ -41,7 +41,7 @@ "normalize.css": "^8.0.1", "noty": "^3.2.0-beta-deprecated", "prettier": "^3.2.2", - "pug": "^3.0.2", + "pug": "^3.0.3", "pug-plain-loader": "^1.1.0", "raw-loader": "^4.0.2", "sass": "^1.69.7", @@ -50,7 +50,7 @@ "vue-data-tables": "^3.4.5", "vue-i18n": "^8.28.2", "vue-lazyload": "^1.3.4", - "vue-markdown": "^2.2.4", + "vue-markdown": "^2.1.3", "vue-marquee-text-component": "^1.2.0", "webpack": "^5.89.0", "webpack-cli": "^5.1.4", diff --git a/html/src/app.js b/html/src/app.js index 3bf35ada..f939d7f2 100644 --- a/html/src/app.js +++ b/html/src/app.js @@ -476,7 +476,7 @@ speechSynthesis.getVoices(); status === 401 && data.error.message === '"Missing Credentials"' ) { - if (endpoint.substring(0, 9) === 'auth/user') { + if (endpoint === 'auth/user') { this.$emit('AUTOLOGIN'); } throw new Error('401: Missing Credentials'); @@ -10006,7 +10006,7 @@ speechSynthesis.getVoices(); this.feedTable.loading = true; var vipList = []; if (this.feedTable.vip) { - vipList = this.getUserVipList(); + vipList = Array.from(this.localFavoriteFriends.values()); } this.feedTable.data = await database.lookupFeedDatabase( this.feedTable.search, @@ -10016,16 +10016,6 @@ speechSynthesis.getVoices(); this.feedTable.loading = false; }; - $app.methods.getUserVipList = function () { - var vipList = []; - API.cachedFavorites.forEach((favorite) => { - if (favorite.type === 'friend') { - vipList.push(favorite.favoriteId); - } - }); - return vipList; - }; - API.$on('LOGIN', async function (args) { $app.friendLog = new Map(); $app.feedTable.data = []; diff --git a/html/src/localization/en/en.json b/html/src/localization/en/en.json index f8ffcabc..1694cee8 100644 --- a/html/src/localization/en/en.json +++ b/html/src/localization/en/en.json @@ -429,9 +429,10 @@ "avatar_database_provider": "Avatar Database Provider" }, "youtube_api": { - "header": "Youtube API", + "header": "YouTube API", "enable": "Enable", - "youtube_api_key": "Youtube API Key" + "youtube_api_key": "YouTube API Key", + "enable_tooltip": "Fetches video titles for use with gameLog and duration for overlay progress bar" }, "video_progress_pie": { "header": "Progress pie overlay for videos", diff --git a/html/src/masks/askme.svg b/html/src/masks/askme.svg index 7422dc1e..8e3a6365 100644 --- a/html/src/masks/askme.svg +++ b/html/src/masks/askme.svg @@ -1,10 +1,10 @@ - + diff --git a/html/src/mixins/tabs/settings.pug b/html/src/mixins/tabs/settings.pug index 48fc5d8d..02bdbd33 100644 --- a/html/src/mixins/tabs/settings.pug +++ b/html/src/mixins/tabs/settings.pug @@ -487,6 +487,8 @@ mixin settingsTab() span.header {{ $t('view.settings.advanced.advanced.youtube_api.header') }} div.options-container-item span.name {{ $t('view.settings.advanced.advanced.youtube_api.enable') }} + el-tooltip(placement="top" style="margin-left:5px" :content="$t('view.settings.advanced.advanced.youtube_api.enable_tooltip')") + i.el-icon-info el-switch(v-model="youTubeApi" @change="changeYouTubeApi") div.options-container-item el-button(size="small" icon="el-icon-caret-right" @click="showYouTubeApiDialog") {{ $t('view.settings.advanced.advanced.youtube_api.youtube_api_key') }}