+
{{ greeting.comment }}
Greeting by: {{ greeting.author }}
diff --git a/src/constants/customizations.js b/src/constants/customizations.js
new file mode 100644
index 0000000..7b677ca
--- /dev/null
+++ b/src/constants/customizations.js
@@ -0,0 +1,33 @@
+import { gameData } from "@/constants";
+
+export class ProfileCustomizations {
+ static baseCardList = [
+ { id: "time", label: "Default" },
+ { id: "carpet", label: "Arcade Carpet" },
+ { id: "gradient", label: "Pink/Purple Gradient" },
+ { id: "pride", label: "Pride Flag" },
+ { id: "trans", label: "Trans Flag" },
+ { id: "loveplus", label: "LovePlus" },
+ ];
+
+ static get cardList() {
+ const gameCards = gameData
+ .filter((game) => !game.skip)
+ .map((game) => ({
+ id: game.assetId ? game.assetId : game.id,
+ label: game.name,
+ }));
+
+ return [...this.baseCardList, ...gameCards];
+ }
+
+ static borderList = [
+ { id: "", label: "None" },
+ { id: "test", label: "Basic" },
+ { id: "swirl", label: "Swirl" },
+ { id: "pride", label: "Pride Flag" },
+ { id: "trans", label: "Trans Flag" },
+ { id: "nonbinary", label: "Non-Binary Flag" },
+ { id: "leaves", label: "Leaves" },
+ ];
+}
diff --git a/src/constants/index.js b/src/constants/index.js
index 9bab10e..749ad23 100644
--- a/src/constants/index.js
+++ b/src/constants/index.js
@@ -602,6 +602,7 @@ export const gameData = [
name: "Classic DDR",
icon: `${ASSET_PATH}/icon/ddr.webp`,
cardBG: `${ASSET_PATH}/card/ddr.webp`,
+ assetId: "ddr",
noRivals: true,
noScores: true,
noRecords: true,
@@ -654,6 +655,7 @@ export const gameData = [
name: "DDR OmniMIX",
icon: `${ASSET_PATH}/icon/ddr.webp`,
cardBG: `${ASSET_PATH}/card/ddr.webp`,
+ assetId: "ddr",
videoTable: [VersionConstants.DDR_A20_PLUS],
scoreHeaders: [
{ text: "Combos", value: "data.combo" },
@@ -1165,6 +1167,7 @@ export const gameData = [
shortName: "IIDX",
icon: `${ASSET_PATH}/icon/iidx.webp`,
cardBG: `${ASSET_PATH}/card/iidx.webp`,
+ assetId: "iidx",
gameOptions: IIDXOptions,
videoTable: [
VersionConstants.IIDX_TRICORO,
@@ -1364,6 +1367,7 @@ export const gameData = [
name: "Classic IIDX",
icon: `${ASSET_PATH}/icon/iidx.webp`,
cardBG: `${ASSET_PATH}/card/iidx.webp`,
+ assetId: "iidx",
noRivals: true,
noScores: true,
noRecords: true,
@@ -1678,6 +1682,7 @@ export const gameData = [
name: "Hello! Pop'n Music",
icon: `${ASSET_PATH}/icon/popn.webp`,
cardBG: `${ASSET_PATH}/card/popn.webp`,
+ assetId: "popn",
skip: true,
noRivals: true,
noScores: true,
@@ -1689,6 +1694,7 @@ export const gameData = [
shortName: "pop'n",
icon: `${ASSET_PATH}/icon/popn.webp`,
cardBG: `${ASSET_PATH}/card/popn.webp`,
+ assetId: "popn",
useUnicode: true,
maxLength: 6,
gameOptions: PopnMusicOptions,
@@ -1861,6 +1867,7 @@ export const gameData = [
name: "Road Fighters 3D",
icon: `${ASSET_PATH}/icon/rf.webp`,
cardBG: `${ASSET_PATH}/card/rf.webp`,
+ assetId: "rf",
skip: true,
noRivals: true,
noScores: true,
@@ -1923,6 +1930,7 @@ export const gameData = [
name: "World Soccer",
icon: `${ASSET_PATH}/icon/we.webp`,
cardBG: `${ASSET_PATH}/card/we.webp`,
+ assetId: "we",
skip: false,
noRivals: true,
noScores: true,
diff --git a/src/menuNavBar.js b/src/menuNavBar.js
index aff146b..f7c4344 100644
--- a/src/menuNavBar.js
+++ b/src/menuNavBar.js
@@ -1,6 +1,7 @@
import {
mdiAccount,
mdiLogout,
+ mdiBrushVariant,
mdiServerNetwork,
mdiCardAccountDetailsOutline,
mdiAccountArrowLeftOutline,
@@ -15,6 +16,11 @@ export default [
label: "Settings",
to: "/profile",
},
+ {
+ icon: mdiBrushVariant,
+ label: "Customize",
+ to: "/profile/customize",
+ },
{
icon: mdiServerNetwork,
label: "Integrations",
diff --git a/src/router/index.js b/src/router/index.js
index e38328e..be08163 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -50,14 +50,14 @@ const routes = [
name: "profile",
component: () => import("@/views/Profile/ProfileView.vue"),
},
- // {
- // meta: {
- // title: "Customizations",
- // },
- // path: "/profile/customize",
- // name: "profile_customizations",
- // component: () => import("@/views/Profile/CustomizeView.vue"),
- // },
+ {
+ meta: {
+ title: "Customizations",
+ },
+ path: "/profile/customize",
+ name: "profile_customizations",
+ component: () => import("@/views/Profile/CustomizeView.vue"),
+ },
{
meta: {
title: "Integrations",
diff --git a/src/stores/api/account.js b/src/stores/api/account.js
index 9bf9ad3..50d71a3 100644
--- a/src/stores/api/account.js
+++ b/src/stores/api/account.js
@@ -180,3 +180,15 @@ export async function APIIntegrateWith(service, code) {
throw error;
}
}
+
+export async function APIUserCustomize(customize) {
+ try {
+ const data = await mainStore.callApi(`/user/customize`, "POST", {
+ customize: customize,
+ });
+ return data;
+ } catch (error) {
+ console.log(`Error saving user customize!`, error);
+ throw error;
+ }
+}
diff --git a/src/stores/main.js b/src/stores/main.js
index a190b15..d100dad 100644
--- a/src/stores/main.js
+++ b/src/stores/main.js
@@ -15,6 +15,7 @@ export const useMainStore = defineStore("main", {
userProfiles: [],
userArcades: [],
profiles: {},
+ userCustomize: {},
/* Field focus with ctrl+k (to register only once) */
isFieldFocusRegistered: false,
@@ -65,6 +66,9 @@ export const useMainStore = defineStore("main", {
if (payload.arcades) {
this.userArcades = payload.arcades;
}
+ if (payload.customize) {
+ this.userCustomize = payload.customize;
+ }
},
fetch(sampleDataKey) {
@@ -250,6 +254,7 @@ export const useMainStore = defineStore("main", {
cardStyle: "time",
profiles: user.profiles,
arcades: user.arcades,
+ customize: user.data?.customize,
});
this.userLoaded = true;
return true;
diff --git a/src/views/Profile/CustomizeView.vue b/src/views/Profile/CustomizeView.vue
index bd62543..f19eae1 100644
--- a/src/views/Profile/CustomizeView.vue
+++ b/src/views/Profile/CustomizeView.vue
@@ -1,18 +1,69 @@
-
+
-
-
-
Avatar Source
+
-
-
Avatar Border
-
-
-
-
Profile Background
-
-
-
+
+
+
+
+
+
+
+
+
-
-
+
-
+
diff --git a/src/views/Profile/ProfileView.vue b/src/views/Profile/ProfileView.vue
index e495b38..2c72b69 100644
--- a/src/views/Profile/ProfileView.vue
+++ b/src/views/Profile/ProfileView.vue
@@ -61,6 +61,7 @@ async function submitProfile() {
const response = await mainStore.putUser(profileForm);
if (response.status == "success") {
profileLoading.value = false;
+ mainStore.userLoaded = false;
await mainStore.loadUser();
$router.go();
}