From cae6f12ea0738f797c7263509d2a2c12dbdc0bf1 Mon Sep 17 00:00:00 2001
From: Geometrically <18202329+Geometrically@users.noreply.github.com>
Date: Sun, 22 Dec 2024 20:03:58 -0700
Subject: [PATCH] More app fixes 0.9.0 (#3054)
* initial set of fixes (toggle sidebar, profile pagination)
* more fixes, bump version
* fix lint:
* fix quick switcher ordering
---
Cargo.lock | 4 +-
apps/app-frontend/package.json | 2 +-
apps/app-frontend/src/App.vue | 300 ++----
.../src/components/GridDisplay.vue | 16 +-
.../src/components/RowDisplay.vue | 7 +-
.../src/components/ui/Instance.vue | 17 +-
.../src/components/ui/NavButton.vue | 91 +-
.../src/components/ui/PromotionWrapper.vue | 2 +-
.../components/ui/QuickInstanceSwitcher.vue | 13 +-
.../src/components/ui/RunningAppBar.vue | 5 -
.../src/components/ui/SearchCard.vue | 2 +-
.../ui/instance_settings/GeneralSettings.vue | 1 +
.../InstallationSettings.vue | 3 +
.../components/ui/modal/AppSettingsModal.vue | 39 +-
.../ui/modal/ConfirmModalWrapper.vue | 10 +-
.../ui/settings/AppearanceSettings.vue | 27 +-
.../ui/settings/FeatureFlagSettings.vue | 34 +-
.../settings/ResourceManagementSettings.vue | 1 +
apps/app-frontend/src/pages/Browse.vue | 17 +-
apps/app-frontend/src/pages/instance/Mods.vue | 155 ++-
.../src/pages/instance/Options.vue | 973 ------------------
apps/app-frontend/src/pages/instance/index.js | 3 +-
apps/app-frontend/src/pages/library/Index.vue | 2 +-
apps/app-frontend/src/pages/project/Index.vue | 5 +-
apps/app-frontend/src/routes.js | 9 -
apps/app-frontend/src/store/theme.js | 19 +-
apps/app/Cargo.toml | 3 +-
apps/app/src/api/ads.rs | 18 +-
apps/app/src/macos/window_ext.rs | 2 +-
apps/app/src/main.rs | 32 +-
apps/app/tauri.conf.json | 2 +-
.../frontend/src/pages/dashboard/projects.vue | 2 +-
.../src/pages/search/[searchProjectType].vue | 1 -
...cd3910b1719f433a0c34d40415dd7681ab272.json | 6 +-
...2dfc577061b92479ce96ffb30a457939b5ffe.json | 7 +-
...7b54a186b98796ec549c9d891089ea33cf3fc.json | 7 +-
...e36adca581f8ad1b90f85d3ec3d92ec61e65e.json | 8 +-
...21065f5e35f321954a9d5ae9cde907d5ce823.json | 7 +-
...cdcf73da199ea6ac05ee3ee798ece80d877cf.json | 13 +-
...b8cea926ac6c65d613904eff1d740df30acda.json | 9 +-
...f15732d84bcebb9ca15225dbabdc0f46ba2d.json} | 6 +-
...131168e87bb37aa65c2156ad2cb6198426d8c.json | 9 +-
...9758c5ca82db396268bca5087bac88f733d9.json} | 16 +-
packages/app-lib/Cargo.toml | 2 +-
.../20241222013857_feature-flags.sql | 2 +
packages/app-lib/src/state/cache.rs | 6 +-
packages/app-lib/src/state/mod.rs | 4 +
packages/app-lib/src/state/profiles.rs | 9 +-
packages/app-lib/src/state/settings.rs | 35 +-
.../ui/src/components/base/PopoutMenu.vue | 1 +
.../components/content/ContentListPanel.vue | 34 +-
.../src/components/project/ProjectHeader.vue | 5 +-
52 files changed, 502 insertions(+), 1501 deletions(-)
delete mode 100644 apps/app-frontend/src/pages/instance/Options.vue
rename packages/app-lib/.sqlx/{query-26e3ed8680f6c492b03b458aabfb3f94fddc753b343ef705263188945d0e578d.json => query-759e4ffe30ebc4f8602256cb419ef15732d84bcebb9ca15225dbabdc0f46ba2d.json} (82%)
rename packages/app-lib/.sqlx/{query-8e19c9cdb0aaa48509724e82f6e8f212c9cd2112fdba77cfeee206025af47761.json => query-d90a2f2f823fc546661a94af07249758c5ca82db396268bca5087bac88f733d9.json} (88%)
create mode 100644 packages/app-lib/migrations/20241222013857_feature-flags.sql
diff --git a/Cargo.lock b/Cargo.lock
index a6c704308..740f7f675 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -8956,7 +8956,7 @@ dependencies = [
[[package]]
name = "theseus"
-version = "0.9.0-1"
+version = "0.9.0-2"
dependencies = [
"async-recursion",
"async-tungstenite",
@@ -9007,7 +9007,7 @@ dependencies = [
[[package]]
name = "theseus_gui"
-version = "0.9.0-1"
+version = "0.9.0-2"
dependencies = [
"chrono",
"cocoa 0.25.0",
diff --git a/apps/app-frontend/package.json b/apps/app-frontend/package.json
index 3f7fe8ed2..ae3969723 100644
--- a/apps/app-frontend/package.json
+++ b/apps/app-frontend/package.json
@@ -1,7 +1,7 @@
{
"name": "@modrinth/app-frontend",
"private": true,
- "version": "0.9.0-1",
+ "version": "0.9.0-2",
"type": "module",
"scripts": {
"dev": "vite",
diff --git a/apps/app-frontend/src/App.vue b/apps/app-frontend/src/App.vue
index 8e79597d8..727d86a28 100644
--- a/apps/app-frontend/src/App.vue
+++ b/apps/app-frontend/src/App.vue
@@ -15,6 +15,7 @@ import {
MaximizeIcon,
RestoreIcon,
LogOutIcon,
+ RightArrowIcon,
} from '@modrinth/assets'
import { Avatar, Button, ButtonStyled, Notifications, OverflowMenu } from '@modrinth/ui'
import { useLoading, useTheming } from '@/store/state'
@@ -54,40 +55,14 @@ import { get_user } from '@/helpers/cache.js'
import AppSettingsModal from '@/components/ui/modal/AppSettingsModal.vue'
import dayjs from 'dayjs'
import PromotionWrapper from '@/components/ui/PromotionWrapper.vue'
-import { hide_ads_window, show_ads_window } from '@/helpers/ads.js'
+import { hide_ads_window, init_ads_window } from '@/helpers/ads.js'
import FriendsList from '@/components/ui/friends/FriendsList.vue'
import { openUrl } from '@tauri-apps/plugin-opener'
import QuickInstanceSwitcher from '@/components/ui/QuickInstanceSwitcher.vue'
const themeStore = useTheming()
-const news = ref([
- {
- title: 'Introducing Modrinth Servers',
- summary: 'Host your next Minecraft server with Modrinth.',
- thumbnail:
- 'https://media.beehiiv.com/cdn-cgi/image/format=auto,width=800,height=421,fit=scale-down,onerror=redirect/uploads/asset/file/eefddc59-b4c4-4e7d-92e8-c26bdef42984/Modrinth-Servers-Thumb.png',
- date: '2024-11-02T00:00:00Z',
- link: 'https://blog.modrinth.com/p/modrinth-servers-beta',
- },
- {
- title: 'Becoming Sustainable',
- summary: 'Announcing 5x creator revenue and updates to the monetization program.',
- thumbnail:
- 'https://media.beehiiv.com/cdn-cgi/image/format=auto,width=800,height=421,fit=scale-down,onerror=redirect/uploads/asset/file/c99b9885-8248-4d7a-b19a-3ae2c902fdd5/revenue.png',
- date: '2024-09-13T00:00:00Z',
- link: 'https://blog.modrinth.com/p/creator-revenue-update',
- },
- {
- title: 'Modrinth+ and New Ads',
- summary:
- 'Introducing a new advertising system, a subscription to remove ads, and a redesign of the website!\n',
- thumbnail:
- 'https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/38ce85e4-5d93-43eb-b61b-b6296f6b9e66/things.png?t=1724260059',
- date: '2024-08-21T00:00:00Z',
- link: 'https://blog.modrinth.com/p/introducing-modrinth-refreshed-site-look-new-advertising-system',
- },
-])
+const news = ref([])
const urlModal = ref(null)
@@ -132,6 +107,9 @@ async function setupApp() {
advanced_rendering,
onboarded,
default_page,
+ toggle_sidebar,
+ developer_mode,
+ feature_flags,
} = await get()
if (default_page === 'Library') {
@@ -149,6 +127,9 @@ async function setupApp() {
themeStore.setThemeState(theme)
themeStore.collapsedNavigation = collapsed_navigation
themeStore.advancedRendering = advanced_rendering
+ themeStore.toggleSidebar = toggle_sidebar
+ themeStore.devMode = developer_mode
+ themeStore.featureFlags = feature_flags
isMaximized.value = await getCurrentWindow().isMaximized()
@@ -190,6 +171,12 @@ async function setupApp() {
}
})
+ useFetch(`https://modrinth.com/blog/news.json`, 'news', true).then((res) => {
+ if (res && res.articles) {
+ news.value = res.articles
+ }
+ })
+
get_opening_command().then(handleCommand)
checkUpdates()
fetchCredentials()
@@ -263,13 +250,29 @@ const hasPlus = computed(
(credentials.value.user.badges & MIDAS_BITFLAG) === MIDAS_BITFLAG,
)
+const sidebarToggled = ref(true)
+
+themeStore.$subscribe(() => {
+ sidebarToggled.value = !themeStore.toggleSidebar
+})
+
+const forceSidebar = ref(false)
+const sidebarVisible = computed(() => sidebarToggled.value || forceSidebar.value)
+const showAd = computed(() => !(!sidebarVisible.value || hasPlus.value))
+
+router.afterEach((to) => {
+ forceSidebar.value = to.path.startsWith('/browse') || to.path.startsWith('/project')
+})
+
watch(
- hasPlus,
+ showAd,
() => {
- if (hasPlus.value) {
+ if (!showAd.value) {
hide_ads_window(true)
} else {
- show_ads_window()
+ setTimeout(() => {
+ init_ads_window(true)
+ }, 400)
}
},
{ immediate: true },
@@ -367,21 +370,21 @@ function handleAuxClick(e) {