diff --git a/apps/app-frontend/package.json b/apps/app-frontend/package.json index 61e19ad5a..72d9c5a45 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.8.701", + "version": "0.8.702", "development_build": true, "type": "module", "scripts": { diff --git a/apps/frontend/src/components/ui/AdPlaceholder.vue b/apps/frontend/src/components/ui/AdPlaceholder.vue index c965ec75d..3bdd45195 100644 --- a/apps/frontend/src/components/ui/AdPlaceholder.vue +++ b/apps/frontend/src/components/ui/AdPlaceholder.vue @@ -1,7 +1,7 @@ + @@ -778,6 +779,7 @@ const userMenuOptions = computed(() => { link: "/settings", }, ]; + // TODO: Only show if user has projects options = [ ...options, @@ -801,6 +803,24 @@ const userMenuOptions = computed(() => { link: "/dashboard/analytics", }, ]; + + if ( + (auth.value && auth.value.user && auth.value.user.role === "moderator") || + auth.value.user.role === "admin" + ) { + options = [ + ...options, + { + divider: true, + }, + { + id: "moderation", + color: "orange", + link: "/moderation/review", + }, + ]; + } + options = [ ...options, { diff --git a/apps/frontend/src/pages/dashboard/index.vue b/apps/frontend/src/pages/dashboard/index.vue index 583bb703e..2b7d63fa7 100644 --- a/apps/frontend/src/pages/dashboard/index.vue +++ b/apps/frontend/src/pages/dashboard/index.vue @@ -88,20 +88,6 @@ > -
-
Current balance
-
- {{ $formatMoney(auth.user.payout_data.balance, true) }} -
- - Withdraw earnings - -
diff --git a/apps/frontend/src/pages/dashboard/revenue/index.vue b/apps/frontend/src/pages/dashboard/revenue/index.vue index 407f9f7bb..25e5d9825 100644 --- a/apps/frontend/src/pages/dashboard/revenue/index.vue +++ b/apps/frontend/src/pages/dashboard/revenue/index.vue @@ -2,21 +2,24 @@

Revenue

-
+

You have - {{ $formatMoney(auth.user.payout_data.balance) }} - available to withdraw. + {{ $formatMoney(userBalance.available) }} + available to withdraw. {{ $formatMoney(userBalance.pending) }} of your + balance is pending.

You have made - {{ $formatMoney(auth.user.payout_data.balance) }}{{ $formatMoney(userBalance.available) }}, which is under the minimum of ${{ minWithdraw }} to withdraw. + {{ $formatMoney(userBalance.pending) }} of your balance is + pending.

@@ -81,6 +84,10 @@ import { TransferIcon, HistoryIcon, PayPalIcon, SaveIcon, XIcon } from "@modrint const auth = await useAuth(); const minWithdraw = ref(0.01); +const { data: userBalance } = await useAsyncData(`payout/balance`, () => + useBaseFetch(`payout/balance`, { apiVersion: 3 }), +); + async function updateVenmo() { startLoading(); try { diff --git a/apps/frontend/src/pages/dashboard/revenue/withdraw.vue b/apps/frontend/src/pages/dashboard/revenue/withdraw.vue index 3ec3ae965..eec8468c6 100644 --- a/apps/frontend/src/pages/dashboard/revenue/withdraw.vue +++ b/apps/frontend/src/pages/dashboard/revenue/withdraw.vue @@ -88,7 +88,7 @@

You are initiating a transfer of your revenue from Modrinth's Creator Monetization Program. How much of your - {{ $formatMoney(auth.user.payout_data.balance) }} balance would you like to + {{ $formatMoney(userBalance.available) }} balance would you like to transfer transfer to {{ selectedMethod.name }}?

@@ -212,10 +212,13 @@ const country = ref( countries.value.find((x) => x.id === (auth.value.user.payout_data.paypal_region ?? "US")), ); -const { data: payoutMethods, refresh: refreshPayoutMethods } = await useAsyncData( - `payout/methods?country=${country.value.id}`, - () => useBaseFetch(`payout/methods?country=${country.value.id}`, { apiVersion: 3 }), -); +const [{ data: userBalance }, { data: payoutMethods, refresh: refreshPayoutMethods }] = + await Promise.all([ + useAsyncData(`payout/balance`, () => useBaseFetch(`payout/balance`, { apiVersion: 3 })), + useAsyncData(`payout/methods?country=${country.value.id}`, () => + useBaseFetch(`payout/methods?country=${country.value.id}`, { apiVersion: 3 }), + ), + ]); const selectedMethodId = ref(payoutMethods.value[0].id); const selectedMethod = computed(() => @@ -295,10 +298,10 @@ const knownErrors = computed(() => { if (!parsedAmount.value && amount.value.length > 0) { errors.push(`${amount.value} is not a valid amount`); } else if ( - parsedAmount.value > auth.value.user.payout_data.balance || + parsedAmount.value > userBalance.value.available || parsedAmount.value > maxWithdrawAmount.value ) { - const maxAmount = Math.min(auth.value.user.payout_data.balance, maxWithdrawAmount.value); + const maxAmount = Math.min(userBalance.value.available, maxWithdrawAmount.value); errors.push(`The amount must be no more than ${data.$formatMoney(maxAmount)}`); } else if (parsedAmount.value <= fees.value || parsedAmount.value < minWithdrawAmount.value) { const minAmount = Math.max(fees.value + 0.01, minWithdrawAmount.value); diff --git a/apps/frontend/src/pages/legal/cmp-info.vue b/apps/frontend/src/pages/legal/cmp-info.vue index 73674a152..847140af3 100644 --- a/apps/frontend/src/pages/legal/cmp-info.vue +++ b/apps/frontend/src/pages/legal/cmp-info.vue @@ -1,7 +1,7 @@ diff --git a/apps/frontend/src/public/promo-frame.html b/apps/frontend/src/public/promo-frame.html index 226c5de11..b1eab69a3 100644 --- a/apps/frontend/src/public/promo-frame.html +++ b/apps/frontend/src/public/promo-frame.html @@ -37,7 +37,7 @@ border-radius: 1rem; position: absolute; left: 0; - bottom: 0; + top: 0; z-index: 2; } @@ -58,19 +58,18 @@ ]); }); - let lastUrl = null window.addEventListener( "message", (event) => { - if (event.data.modrinthOpenUrl && window.__TAURI_INTERNALS__ && lastUrl !== event.data.modrinthOpenUrl) { - lastUrl = event.data.modrinthOpenUrl - // window.__TAURI_INTERNALS__.invoke("plugin:shell|open", { - // path: event.data.modrinthOpenUrl, - // }); + if (event.data.modrinthAdClick && window.__TAURI_INTERNALS__) { + window.__TAURI_INTERNALS__.invoke("plugin:ads|record_ads_click", {}); + } - setTimeout(() => { - lastUrl = null - }, 500) + if (event.data.modrinthOpenUrl && window.__TAURI_INTERNALS__) { + window.__TAURI_INTERNALS__.invoke("plugin:ads|open_link", { + path: event.data.modrinthOpenUrl, + origin: event.origin, + }); } }, false, diff --git a/packages/ui/src/components/base/Promotion.vue b/packages/ui/src/components/base/Promotion.vue deleted file mode 100644 index 8aca6209c..000000000 --- a/packages/ui/src/components/base/Promotion.vue +++ /dev/null @@ -1,121 +0,0 @@ - - - - - diff --git a/packages/ui/src/components/index.ts b/packages/ui/src/components/index.ts index 572917c63..9dfb4e53a 100644 --- a/packages/ui/src/components/index.ts +++ b/packages/ui/src/components/index.ts @@ -22,7 +22,6 @@ export { default as Page } from './base/Page.vue' export { default as Pagination } from './base/Pagination.vue' export { default as PopoutMenu } from './base/PopoutMenu.vue' export { default as ProjectCard } from './base/ProjectCard.vue' -export { default as Promotion } from './base/Promotion.vue' export { default as ScrollablePanel } from './base/ScrollablePanel.vue' export { default as Slider } from './base/Slider.vue' export { default as StatItem } from './base/StatItem.vue'