Support for latest Modrinth Upstream

This commit is contained in:
2024-12-26 20:31:14 +03:00
parent 7bbc79c6a1
commit 59f6f7102f
17 changed files with 2659 additions and 6191 deletions

1569
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,7 @@
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" /> <link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Modrinth App</title> <title>AstralRinth App</title>
<link rel="stylesheet" href="/src/assets/stylesheets/global.scss" /> <link rel="stylesheet" href="/src/assets/stylesheets/global.scss" />
</head> </head>

View File

@@ -1,8 +1,7 @@
{ {
"name": "@modrinth/app-frontend", "name": "@modrinth/app-frontend",
"private": true, "private": true,
"version": "0.9.201", "version": "0.9.2",
"development_build": true,
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",

View File

@@ -23,7 +23,7 @@ import { useLoading, useTheming } from '@/store/state'
// import ModrinthAppLogo from '@/assets/modrinth_app.svg?component' // import ModrinthAppLogo from '@/assets/modrinth_app.svg?component'
import AccountsCard from '@/components/ui/AccountsCard.vue' import AccountsCard from '@/components/ui/AccountsCard.vue'
import InstanceCreationModal from '@/components/ui/InstanceCreationModal.vue' import InstanceCreationModal from '@/components/ui/InstanceCreationModal.vue'
import { get } from '@/helpers/settings' import { get, set } from '@/helpers/settings'
import Breadcrumbs from '@/components/ui/Breadcrumbs.vue' import Breadcrumbs from '@/components/ui/Breadcrumbs.vue'
import RunningAppBar from '@/components/ui/RunningAppBar.vue' import RunningAppBar from '@/components/ui/RunningAppBar.vue'
import SplashScreen from '@/components/ui/SplashScreen.vue' import SplashScreen from '@/components/ui/SplashScreen.vue'
@@ -100,6 +100,14 @@ onUnmounted(() => {
async function setupApp() { async function setupApp() {
stateInitialized.value = true stateInitialized.value = true
const settings = await get()
// Patched
settings.personalized_ads = false
settings.telemetry = false
await set(settings)
const { const {
native_decorations, native_decorations,
theme, theme,
@@ -112,7 +120,8 @@ async function setupApp() {
toggle_sidebar, toggle_sidebar,
developer_mode, developer_mode,
feature_flags, feature_flags,
} = await get() } = settings
if (default_page === 'Library') { if (default_page === 'Library') {
await router.push('/library') await router.push('/library')
@@ -141,9 +150,13 @@ async function setupApp() {
initAnalytics() initAnalytics()
if (!telemetry) { if (!telemetry) {
console.info("[AstralRinth] Telemetry disabled by default (Hard patched in code).") console.info("[AR] Telemetry disabled by default (Hard patched).")
optOutAnalytics() optOutAnalytics()
} }
if (!personalized_ads) {
console.info("[AR] Personalized ads disabled by default (Hard patched).")
}
if (dev) debugAnalytics() if (dev) debugAnalytics()
trackEvent('Launched', { version, dev, onboarded }) trackEvent('Launched', { version, dev, onboarded })

View File

@@ -146,7 +146,7 @@ function devModeCount() {
<ModrinthIcon class="w-6 h-6" /> <ModrinthIcon class="w-6 h-6" />
</button> </button>
<div> <div>
<p class="m-0">Modrinth App {{ version }}</p> <p class="m-0">AstralRinth App {{ version }}</p>
<p class="m-0"> <p class="m-0">
<span v-if="osPlatform === 'macos'">MacOS</span> <span v-if="osPlatform === 'macos'">MacOS</span>
<span v-else class="capitalize">{{ osPlatform }}</span> <span v-else class="capitalize">{{ osPlatform }}</span>

View File

@@ -37,10 +37,10 @@ const props = defineProps({
type: Boolean, type: Boolean,
default: true, default: true,
}, },
showAdOnClose: { // showAdOnClose: {
type: Boolean, // type: Boolean,
default: true, // default: true,
}, // },
}) })
const emit = defineEmits(['proceed']) const emit = defineEmits(['proceed'])
@@ -51,7 +51,7 @@ defineExpose({
modal.value.show() modal.value.show()
}, },
hide: () => { hide: () => {
onModalHide() // onModalHide()
modal.value.hide() modal.value.hide()
}, },
}) })

View File

@@ -21,10 +21,10 @@ const props = defineProps({
return () => { } return () => { }
}, },
}, },
showAdOnClose: { // showAdOnClose: {
type: Boolean, // type: Boolean,
default: true, // default: true,
}, // },
}) })
const modal = ref(null) const modal = ref(null)

View File

@@ -26,7 +26,7 @@ watch(
<div> <div>
<h2 class="m-0 text-lg font-extrabold text-contrast">Personalized ads</h2> <h2 class="m-0 text-lg font-extrabold text-contrast">Personalized ads</h2>
<p class="m-0 text-sm"> <p class="m-0 text-sm">
Modrinth's ad provider, Aditude, shows ads based on your preferences. By disabling this (Hard disabled by AR) Modrinth's ad provider, Aditude, shows ads based on your preferences. By disabling this
option, you opt out and ads will no longer be shown based on your interests. option, you opt out and ads will no longer be shown based on your interests.
</p> </p>
</div> </div>
@@ -34,6 +34,7 @@ watch(
id="personalized-ads" id="personalized-ads"
:model-value="settings.personalized_ads" :model-value="settings.personalized_ads"
:checked="settings.personalized_ads" :checked="settings.personalized_ads"
:disabled="!settings.personalized_ads"
@update:model-value=" @update:model-value="
(e) => { (e) => {
settings.personalized_ads = e settings.personalized_ads = e
@@ -46,7 +47,7 @@ watch(
<div> <div>
<h2 class="m-0 text-lg font-extrabold text-contrast">Telemetry</h2> <h2 class="m-0 text-lg font-extrabold text-contrast">Telemetry</h2>
<p class="m-0 text-sm"> <p class="m-0 text-sm">
Modrinth collects anonymized analytics and usage data to improve our user experience and (Hard disabled by AR) • Modrinth collects anonymized analytics and usage data to improve our user experience and
customize your experience. By disabling this option, you opt out and your data will no customize your experience. By disabling this option, you opt out and your data will no
longer be collected. longer be collected.
</p> </p>
@@ -55,6 +56,7 @@ watch(
id="opt-out-analytics" id="opt-out-analytics"
:model-value="settings.telemetry" :model-value="settings.telemetry"
:checked="settings.telemetry" :checked="settings.telemetry"
:disabled="!settings.telemetry"
@update:model-value=" @update:model-value="
(e) => { (e) => {
settings.telemetry = e settings.telemetry = e

View File

@@ -20,7 +20,7 @@ export const DEFAULT_FEATURE_FLAGS = validateValues({
// Developer flags // Developer flags
developerMode: false, developerMode: false,
showVersionFilesInTable: false, showVersionFilesInTable: false,
showAdsWithPlus: false, // showAdsWithPlus: false,
// Feature toggles // Feature toggles
projectTypesPrimaryNav: false, projectTypesPrimaryNav: false,

View File

@@ -655,12 +655,12 @@
:tags="tags" :tags="tags"
class="card flex-card experimental-styles-within" class="card flex-card experimental-styles-within"
/> />
<AdPlaceholder <!-- <AdPlaceholder
v-if=" v-if="
(!auth.user || !isPermission(auth.user.badges, 1 << 0) || flags.showAdsWithPlus) && (!auth.user || !isPermission(auth.user.badges, 1 << 0) || flags.showAdsWithPlus) &&
tags.approvedStatuses.includes(project.status) tags.approvedStatuses.includes(project.status)
" "
/> /> -->
<ProjectSidebarLinks <ProjectSidebarLinks
:project="project" :project="project"
:link-target="$external()" :link-target="$external()"
@@ -843,7 +843,7 @@ import ModerationChecklist from "~/components/ui/ModerationChecklist.vue";
import Accordion from "~/components/ui/Accordion.vue"; import Accordion from "~/components/ui/Accordion.vue";
import ModrinthIcon from "~/assets/images/utils/modrinth.svg?component"; import ModrinthIcon from "~/assets/images/utils/modrinth.svg?component";
import AutomaticAccordion from "~/components/ui/AutomaticAccordion.vue"; import AutomaticAccordion from "~/components/ui/AutomaticAccordion.vue";
import AdPlaceholder from "~/components/ui/AdPlaceholder.vue"; // import AdPlaceholder from "~/components/ui/AdPlaceholder.vue";
const data = useNuxtApp(); const data = useNuxtApp();
const route = useNativeRoute(); const route = useNativeRoute();

View File

@@ -661,7 +661,7 @@ import RightArrowIcon from "~/assets/images/utils/right-arrow.svg?component";
import Modal from "~/components/ui/Modal.vue"; import Modal from "~/components/ui/Modal.vue";
import ChevronRightIcon from "~/assets/images/utils/chevron-right.svg?component"; import ChevronRightIcon from "~/assets/images/utils/chevron-right.svg?component";
import AdPlaceholder from "~/components/ui/AdPlaceholder.vue"; // import AdPlaceholder from "~/components/ui/AdPlaceholder.vue";
export default defineNuxtComponent({ export default defineNuxtComponent({
components: { components: {
MarkdownEditor, MarkdownEditor,

View File

@@ -247,9 +247,9 @@
</div> </div>
</template> </template>
</div> </div>
<AdPlaceholder <!-- <AdPlaceholder
v-if="!auth.user || !isPermission(auth.user.badges, 1 << 0) || flags.showAdsWithPlus" v-if="!auth.user || !isPermission(auth.user.badges, 1 << 0) || flags.showAdsWithPlus"
/> /> -->
</div> </div>
<div class="normal-page__content"> <div class="normal-page__content">
<nav class="navigation-card"> <nav class="navigation-card">
@@ -395,7 +395,7 @@ import { addNotification } from "~/composables/notifs.js";
import ModalConfirm from "~/components/ui/ModalConfirm.vue"; import ModalConfirm from "~/components/ui/ModalConfirm.vue";
import NavRow from "~/components/ui/NavRow.vue"; import NavRow from "~/components/ui/NavRow.vue";
import ProjectCard from "~/components/ui/ProjectCard.vue"; import ProjectCard from "~/components/ui/ProjectCard.vue";
import AdPlaceholder from "~/components/ui/AdPlaceholder.vue"; // import AdPlaceholder from "~/components/ui/AdPlaceholder.vue";
const vintl = useVIntl(); const vintl = useVIntl();
const { formatMessage } = vintl; const { formatMessage } = vintl;

View File

@@ -140,9 +140,9 @@
</ContentPageHeader> </ContentPageHeader>
</div> </div>
<div class="normal-page__sidebar"> <div class="normal-page__sidebar">
<AdPlaceholder <!-- <AdPlaceholder
v-if="!auth.user || !isPermission(auth.user.badges, 1 << 0) || flags.showAdsWithPlus" v-if="!auth.user || !isPermission(auth.user.badges, 1 << 0) || flags.showAdsWithPlus"
/> /> -->
<div class="card flex-card"> <div class="card flex-card">
<h2>Members</h2> <h2>Members</h2>
@@ -265,7 +265,7 @@ import NavStackItem from "~/components/ui/NavStackItem.vue";
import ModalCreation from "~/components/ui/ModalCreation.vue"; import ModalCreation from "~/components/ui/ModalCreation.vue";
import UpToDate from "~/assets/images/illustrations/up_to_date.svg?component"; import UpToDate from "~/assets/images/illustrations/up_to_date.svg?component";
import ProjectCard from "~/components/ui/ProjectCard.vue"; import ProjectCard from "~/components/ui/ProjectCard.vue";
import AdPlaceholder from "~/components/ui/AdPlaceholder.vue"; // import AdPlaceholder from "~/components/ui/AdPlaceholder.vue";
import OrganizationIcon from "~/assets/images/utils/organization.svg?component"; import OrganizationIcon from "~/assets/images/utils/organization.svg?component";
import DownloadIcon from "~/assets/images/utils/download.svg?component"; import DownloadIcon from "~/assets/images/utils/download.svg?component";

View File

@@ -50,12 +50,12 @@
}" }"
aria-label="Filters" aria-label="Filters"
> >
<AdPlaceholder <!-- <AdPlaceholder
v-if=" v-if="
(!auth.user || !isPermission(auth.user.badges, 1 << 0) || flags.showAdsWithPlus) && (!auth.user || !isPermission(auth.user.badges, 1 << 0) || flags.showAdsWithPlus) &&
!server !server
" "
/> /> -->
<div v-if="filtersMenuOpen" class="fixed inset-0 z-40 bg-bg"></div> <div v-if="filtersMenuOpen" class="fixed inset-0 z-40 bg-bg"></div>
<div <div
class="flex flex-col gap-3" class="flex flex-col gap-3"
@@ -322,7 +322,7 @@ import FilterIcon from "~/assets/images/utils/filter.svg?component";
import GridIcon from "~/assets/images/utils/grid.svg?component"; import GridIcon from "~/assets/images/utils/grid.svg?component";
import ListIcon from "~/assets/images/utils/list.svg?component"; import ListIcon from "~/assets/images/utils/list.svg?component";
import ImageIcon from "~/assets/images/utils/image.svg?component"; import ImageIcon from "~/assets/images/utils/image.svg?component";
import AdPlaceholder from "~/components/ui/AdPlaceholder.vue"; // import AdPlaceholder from "~/components/ui/AdPlaceholder.vue";
import NavTabs from "~/components/ui/NavTabs.vue"; import NavTabs from "~/components/ui/NavTabs.vue";
const { formatMessage } = useVIntl(); const { formatMessage } = useVIntl();

View File

@@ -246,9 +246,9 @@
</div> </div>
</div> </div>
</div> </div>
<AdPlaceholder <!-- <AdPlaceholder
v-if="!auth.user || !isPermission(auth.user.badges, 1 << 0) || flags.showAdsWithPlus" v-if="!auth.user || !isPermission(auth.user.badges, 1 << 0) || flags.showAdsWithPlus"
/> /> -->
</div> </div>
</div> </div>
</div> </div>
@@ -285,7 +285,7 @@ import WorldIcon from "~/assets/images/utils/world.svg?component";
import ModalCreation from "~/components/ui/ModalCreation.vue"; import ModalCreation from "~/components/ui/ModalCreation.vue";
import Avatar from "~/components/ui/Avatar.vue"; import Avatar from "~/components/ui/Avatar.vue";
import CollectionCreateModal from "~/components/ui/CollectionCreateModal.vue"; import CollectionCreateModal from "~/components/ui/CollectionCreateModal.vue";
import AdPlaceholder from "~/components/ui/AdPlaceholder.vue"; // import AdPlaceholder from "~/components/ui/AdPlaceholder.vue";
const data = useNuxtApp(); const data = useNuxtApp();
const route = useNativeRoute(); const route = useNativeRoute();

View File

@@ -2,12 +2,12 @@ use serde::{Deserialize, Serialize};
use tokio::io; use tokio::io;
const PACKAGE_JSON_CONTENT: &str = const PACKAGE_JSON_CONTENT: &str =
include_str!("../../../../apps/app-frontend/package.json"); // include_str!("../../../../apps/app-frontend/package.json");
include_str!("../../../../apps/app/tauri.conf.json");
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
pub struct Launcher { pub struct Launcher {
pub version: String, pub version: String
pub development_build: bool,
} }
pub fn read_package_json() -> io::Result<Launcher> { pub fn read_package_json() -> io::Result<Launcher> {

7191
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff