diff --git a/src/locales/en.json b/src/locales/en.json
index 78cd32d..40e7c8e 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -78,10 +78,13 @@
"ago": "ago"
},
"personnalinformation": {
- "basicinformation": "Basic information",
+ "informations": "Informations",
"title": "Personal information",
"profilepicture": "Profile picture",
- "name": "Name",
+ "fullname": "Name",
+ "firstname": "Firstname",
+ "lastname": "Lastname",
+ "alias": "Alias",
"dob": "Date of birth",
"gender": "Gender",
"contactdetails": "Contact details",
diff --git a/src/locales/fr.json b/src/locales/fr.json
index 3cc2998..be50f22 100644
--- a/src/locales/fr.json
+++ b/src/locales/fr.json
@@ -78,10 +78,13 @@
"ago": ""
},
"personnalinformation": {
- "basicinformation": "Information de base",
+ "informations": "Informations",
"title": "Informations personnelles",
"profilepicture": "Photo de profil",
- "name": "Nom",
+ "fullname": "Nom",
+ "firstname": "Prénom",
+ "lastname": "Nom",
+ "alias": "Pseudonyme",
"dob": "Date de naissance",
"gender": "Genre",
"contactdetails": "Coordonnées",
diff --git a/src/stores/userStore.js b/src/stores/userStore.js
index d481f32..359f550 100644
--- a/src/stores/userStore.js
+++ b/src/stores/userStore.js
@@ -13,6 +13,7 @@ export const useUserStore = defineStore(
async (newValue) => {
if (newValue) {
await fetchCurrentUserProfile()
+ await fetchCurrentCreatorProfile()
} else {
user.value = undefined
creator.value = undefined
@@ -31,10 +32,25 @@ export const useUserStore = defineStore(
const hasCreator = computed(() =>
creator.value
&& Object.getOwnPropertyNames(creator.value).length >= 1)
-
+
+ const fullname = computed(() => {
+ if (user.value) {
+ const {firstname, lastname} = user.value;
+
+ if (firstname && lastname) {
+ return `${lastname}, ${firstname}`;
+ } else if (firstname) {
+ return firstname;
+ } else if (lastname) {
+ return lastname;
+ }
+ }
+ return 'n/a';
+ })
+
const alias = computed(() => {
if (user.value) {
- return user.value.alias || `${user.value.firstName || ''} ${user.value.lastName || ''}`.trim() || 'Anonyme'
+ return user.value.alias || `${user.value.firstname || ''} ${user.value.lastname || ''}`.trim() || 'Anonyme'
}
return 'Anonyme';
})
@@ -44,24 +60,120 @@ export const useUserStore = defineStore(
: '/images/usersmedia/anonyme/profilepictures/profileAnonymeSquare.png'
})
+ const client = useClient()
+
async function fetchCurrentUserProfile() {
try {
- const client = useClient()
- const userResponse = await client.get("/api/GetMyUser");
+ const userResponse = await client.get("/api/users/profile");
user.value = userResponse.data
-
- try {
- const creatorId = userResponse.data.id
- const creatorResponse = await client.get(`/api/creators/${creatorId}`)
- creator.value = creatorResponse.data
- } catch (error) {
- creator.value = undefined
- }
} catch (error) {
user.value = undefined;
+ }
+ }
+
+ async function fetchCurrentCreatorProfile() {
+ try {
+ const creatorResponse = await client.get(`/api/creators/profile`)
+ creator.value = creatorResponse.data
+ } catch (error) {
creator.value = undefined
}
}
- return {user, creator, alias, hasCreator, portraitUrl, fetchCurrentUserProfile}
+ async function changeFullname(firstname, lastname) {
+ try {
+ await client.post(
+ `/api/users/fullname`,
+ {
+ firstname: firstname,
+ lastname: lastname
+ })
+ user.value.firstname = firstname;
+ user.value.lastname = lastname;
+ } catch (error) {
+ console.error(error)
+ }
+ }
+
+ async function changeAlias(alias) {
+ try {
+ await client.post(
+ `/api/users/alias`,
+ {
+ alias: alias
+ })
+ user.value.alias = alias;
+ } catch (error) {
+ console.error(error)
+ }
+ }
+
+ async function changeBirthday(birthdate) {
+ try {
+ await client.post(
+ `/api/users/birthdate`,
+ {
+ birthdate: birthdate
+ })
+ user.value.birthDate = birthdate;
+ } catch (error) {
+ console.error(error)
+ }
+ }
+
+ async function changePhone(phoneNumber) {
+ try {
+ await client.post(
+ `/api/users/phone`,
+ {
+ phoneNumber: phoneNumber
+ })
+ user.value.phoneNumber = phoneNumber;
+ } catch (error) {
+ console.error(error)
+ }
+ }
+
+ async function changeEmail(email) {
+ try {
+ await client.post(
+ `/api/users/email`,
+ {
+ email: email
+ })
+ user.value.email = email;
+ } catch (error) {
+ console.error(error)
+ }
+ }
+
+ async function changeAddress(address) {
+ try {
+ await client.post(
+ `/api/users/address`,
+ {
+ address: address
+ })
+ user.value.address = address;
+ } catch (error) {
+ console.error(error)
+ }
+ }
+
+ return {
+ user,
+ creator,
+ alias,
+ hasCreator,
+ fullname,
+ portraitUrl,
+ changeFullname,
+ changeAlias,
+ changeBirthday,
+ changePhone,
+ changeEmail,
+ changeAddress,
+ fetchCurrentUserProfile,
+ fetchCurrentCreatorProfile
+ }
})
diff --git a/src/views/main/Header.vue b/src/views/main/Header.vue
index 1435909..11f0e5f 100644
--- a/src/views/main/Header.vue
+++ b/src/views/main/Header.vue
@@ -15,7 +15,7 @@
alt="Hutopy Logo"
class="w-10"
>
-
ALPHA
+ ALPHA
diff --git a/src/views/profile/ProfilePage.vue b/src/views/profile/ProfilePage.vue
index 29ea3e3..27547bf 100644
--- a/src/views/profile/ProfilePage.vue
+++ b/src/views/profile/ProfilePage.vue
@@ -27,7 +27,7 @@
{{ $t('profilemenu.creator') }}
-
+
mdi-information
{{ $t('profilemenu.user') }}
@@ -61,8 +61,8 @@
-
-
+
+
@@ -76,10 +76,10 @@
import {ref, onMounted} from "vue";
import ManageAccount from "@/views/profile/management/ManageAccount.vue";
import CreatorPage from "@/views/profile/creators/CreatorPage.vue";
-import PersonnalInfo from "@/views/profile/account/PersonnalInfo.vue";
+import AccountPage from "@/views/profile/account/AccountPage.vue";
import AccountSecurity from "@/views/profile/security/AccountSecurity.vue";
-const currentComponent = ref('PersonnalInfo'); // Default component
+const currentComponent = ref('AccountPage'); // Default component
const isDown = ref(false);
const startX = ref(0);
const scrollLeft = ref(0);
diff --git a/src/views/profile/account/AccountPage.vue b/src/views/profile/account/AccountPage.vue
new file mode 100644
index 0000000..f65f98e
--- /dev/null
+++ b/src/views/profile/account/AccountPage.vue
@@ -0,0 +1,294 @@
+
+
+
+
+ mdi-information
+ {{ $t('personnalinformation.title') }}
+
+
+
+
+ {{ $t('personnalinformation.informations') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('personnalinformation.contactdetails') }}
+
+
+
+
+
+
+
+
+
+
+ {{ $t('personnalinformation.addresses') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/profile/account/AddressDialog.vue b/src/views/profile/account/AddressDialog.vue
new file mode 100644
index 0000000..40d8e08
--- /dev/null
+++ b/src/views/profile/account/AddressDialog.vue
@@ -0,0 +1,42 @@
+
+
+
+ Adresse
+
+
+
+
+
+
+
+
+ Annuler
+
+
+ Enregistrer
+
+
+
+
+
+
+
+
diff --git a/src/views/profile/account/AdressesHome.vue b/src/views/profile/account/AdressesHome.vue
deleted file mode 100644
index bced59c..0000000
--- a/src/views/profile/account/AdressesHome.vue
+++ /dev/null
@@ -1,23 +0,0 @@
-
- Adresse à votre domicile
-
-
-
-
- Annuler
- Enregistrer
-
-
-
-
-
-
diff --git a/src/views/profile/account/AdressesWork.vue b/src/views/profile/account/AdressesWork.vue
deleted file mode 100644
index 08af31b..0000000
--- a/src/views/profile/account/AdressesWork.vue
+++ /dev/null
@@ -1,23 +0,0 @@
-
- Adresse au travail
-
-
-
-
- Annuler
- Enregistrer
-
-
-
-
-
-
diff --git a/src/views/profile/account/AliasDialog.vue b/src/views/profile/account/AliasDialog.vue
new file mode 100644
index 0000000..bb7e0af
--- /dev/null
+++ b/src/views/profile/account/AliasDialog.vue
@@ -0,0 +1,38 @@
+
+
+
+ {{ $t('personnalinformation.alias') }}
+
+
+
+
+
+
+
+
+ Annuler
+
+
+ Enregistrer
+
+
+
+
+
+
+
+
diff --git a/src/views/profile/account/Birthday.vue b/src/views/profile/account/Birthday.vue
deleted file mode 100644
index 0a771a8..0000000
--- a/src/views/profile/account/Birthday.vue
+++ /dev/null
@@ -1,26 +0,0 @@
-
- Date de naissance
-
-
-
-
- Annuler
- Enregistrer
-
-
-
-
-
-
diff --git a/src/views/profile/account/BirthdayDialog.vue b/src/views/profile/account/BirthdayDialog.vue
new file mode 100644
index 0000000..ab5721a
--- /dev/null
+++ b/src/views/profile/account/BirthdayDialog.vue
@@ -0,0 +1,37 @@
+
+
+
+ Date de naissance
+
+
+
+
+
+
+
+
+ Annuler
+
+
+ Enregistrer
+
+
+
+
+
+
+
diff --git a/src/views/profile/account/Email.vue b/src/views/profile/account/Email.vue
deleted file mode 100644
index d3e8ef8..0000000
--- a/src/views/profile/account/Email.vue
+++ /dev/null
@@ -1,22 +0,0 @@
-
- Courriel
-
-
-
-
- Annuler
- Enregistrer
-
-
-
-
-
-
diff --git a/src/views/profile/account/EmailDialog.vue b/src/views/profile/account/EmailDialog.vue
new file mode 100644
index 0000000..5dfac87
--- /dev/null
+++ b/src/views/profile/account/EmailDialog.vue
@@ -0,0 +1,38 @@
+
+
+
+ Courriel
+
+
+
+
+
+
+
+
+ Annuler
+
+
+ Enregistrer
+
+
+
+
+
+
+
+
diff --git a/src/views/profile/account/FullnameDialog.vue b/src/views/profile/account/FullnameDialog.vue
new file mode 100644
index 0000000..97ecd4b
--- /dev/null
+++ b/src/views/profile/account/FullnameDialog.vue
@@ -0,0 +1,45 @@
+
+
+
+ {{ $t('personnalinformation.fullname') }}
+
+
+
+
+
+
+
+
+
+
+ Annuler
+
+
+ Enregistrer
+
+
+
+
+
+
+
+
diff --git a/src/views/profile/account/Gender.vue b/src/views/profile/account/Gender.vue
deleted file mode 100644
index 21cbfa4..0000000
--- a/src/views/profile/account/Gender.vue
+++ /dev/null
@@ -1,33 +0,0 @@
-
- Genre
-
-
-
-
-
-
-
-
-
-
- Annuler
- Enregistrer
-
-
-
-
-
-
-
diff --git a/src/views/profile/account/Name.vue b/src/views/profile/account/Name.vue
deleted file mode 100644
index 508274c..0000000
--- a/src/views/profile/account/Name.vue
+++ /dev/null
@@ -1,50 +0,0 @@
-
- Nom
-
-
-
-
-
-
-
-
- Annuler
- Enregistrer
-
-
-
-
-
-
diff --git a/src/views/profile/account/PersonnalInfo.vue b/src/views/profile/account/PersonnalInfo.vue
deleted file mode 100644
index 4c94253..0000000
--- a/src/views/profile/account/PersonnalInfo.vue
+++ /dev/null
@@ -1,166 +0,0 @@
-
-
-
- mdi-information {{$t('personnalinformation.title')}}
-
-
-
-
{{$t('personnalinformation.basicinformation')}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
{{$t('personnalinformation.contactdetails')}}
-
-
-
-
-
-
-
-
-
-
-
-
-
{{$t('personnalinformation.addresses')}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/views/profile/account/Phone.vue b/src/views/profile/account/Phone.vue
deleted file mode 100644
index 6be00aa..0000000
--- a/src/views/profile/account/Phone.vue
+++ /dev/null
@@ -1,32 +0,0 @@
-
- Numéro de téléphone
-
-
-
-
-
-
- Annuler
- Enregistrer
-
-
-
-
-
-
diff --git a/src/views/profile/account/PhoneDialog.vue b/src/views/profile/account/PhoneDialog.vue
new file mode 100644
index 0000000..dfd6963
--- /dev/null
+++ b/src/views/profile/account/PhoneDialog.vue
@@ -0,0 +1,39 @@
+
+
+
+
+ Numéro de téléphone
+
+
+
+
+
+
+
+
+ Annuler
+
+
+ Enregistrer
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/profile/account/PortraitDialog.vue b/src/views/profile/account/PortraitDialog.vue
new file mode 100644
index 0000000..a2f5757
--- /dev/null
+++ b/src/views/profile/account/PortraitDialog.vue
@@ -0,0 +1,36 @@
+
+
+
+ Portrait
+
+
+
+
+
+
+
+
+ Annuler
+
+
+ Enregistrer
+
+
+
+
+
+
+
diff --git a/src/views/profile/management/ManageAccount.vue b/src/views/profile/management/ManageAccount.vue
index d72ad25..2591fb2 100644
--- a/src/views/profile/management/ManageAccount.vue
+++ b/src/views/profile/management/ManageAccount.vue
@@ -8,7 +8,7 @@