From e75b64af1420df18350f6fcff221f074c6823aa7 Mon Sep 17 00:00:00 2001
From: purifetchi <0xlunaric@gmail.com>
Date: Fri, 27 Jun 2025 21:06:21 +0200
Subject: [PATCH 01/23] feat: start work on profile editing frontend.
---
PinkSea.Frontend/.vscode/settings.json | 5 +-
PinkSea.Frontend/src/api/atproto/lexicons.ts | 15 +-
.../src/components/SettingsGroup.vue | 34 +++++
PinkSea.Frontend/src/components/UserCard.vue | 98 +++++++++++++
PinkSea.Frontend/src/models/profile.ts | 11 ++
PinkSea.Frontend/src/router/index.ts | 17 ++-
PinkSea.Frontend/src/views/SettingsView.vue | 50 +++----
PinkSea.Frontend/src/views/UserEditView.vue | 112 +++++++++++++++
PinkSea.Frontend/src/views/UserView.vue | 131 ++++++------------
9 files changed, 343 insertions(+), 130 deletions(-)
create mode 100644 PinkSea.Frontend/src/components/SettingsGroup.vue
create mode 100644 PinkSea.Frontend/src/components/UserCard.vue
create mode 100644 PinkSea.Frontend/src/models/profile.ts
create mode 100644 PinkSea.Frontend/src/views/UserEditView.vue
diff --git a/PinkSea.Frontend/.vscode/settings.json b/PinkSea.Frontend/.vscode/settings.json
index 384d612..a6d8a68 100644
--- a/PinkSea.Frontend/.vscode/settings.json
+++ b/PinkSea.Frontend/.vscode/settings.json
@@ -9,5 +9,8 @@
"source.fixAll": "explicit"
},
"editor.formatOnSave": true,
- "editor.defaultFormatter": "esbenp.prettier-vscode"
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
+ "[typescript]": {
+ "editor.defaultFormatter": "vscode.typescript-language-features"
+ }
}
diff --git a/PinkSea.Frontend/src/api/atproto/lexicons.ts b/PinkSea.Frontend/src/api/atproto/lexicons.ts
index d470bf4..71afc54 100644
--- a/PinkSea.Frontend/src/api/atproto/lexicons.ts
+++ b/PinkSea.Frontend/src/api/atproto/lexicons.ts
@@ -2,6 +2,7 @@ import type { Oekaki } from '@/models/oekaki'
import type { SearchType } from '@/models/search-type'
import type { Author } from '@/models/author'
import type { TagSearchResult } from '@/models/tag-search-result'
+import type Profile from '@/models/profile'
declare module '@atcute/client/lexicons' {
type EmptyParams = object
@@ -109,18 +110,6 @@ declare module '@atcute/client/lexicons' {
interface Params {
did: string
}
-
- interface Output {
- did: string,
- handle: string,
- nick: string,
- description: string,
- links: [{
- name: string,
- url: string
- }],
- avatar: string
- }
}
// eslint-disable-next-line @typescript-eslint/no-namespace
@@ -174,7 +163,7 @@ declare module '@atcute/client/lexicons' {
},
'com.shinolabs.pinksea.unspecced.getProfile': {
params: ComShinolabsPinkseaUnspeccedGetProfile.Params,
- output: ComShinolabsPinkseaUnspeccedGetProfile.Output
+ output: Profile
},
'com.shinolabs.pinksea.getSearchResults': {
params: ComShinolabsPinkseaGetSearchResults.Params,
diff --git a/PinkSea.Frontend/src/components/SettingsGroup.vue b/PinkSea.Frontend/src/components/SettingsGroup.vue
new file mode 100644
index 0000000..1af7ca3
--- /dev/null
+++ b/PinkSea.Frontend/src/components/SettingsGroup.vue
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/PinkSea.Frontend/src/components/UserCard.vue b/PinkSea.Frontend/src/components/UserCard.vue
new file mode 100644
index 0000000..24b30c4
--- /dev/null
+++ b/PinkSea.Frontend/src/components/UserCard.vue
@@ -0,0 +1,98 @@
+
+
+
+
+
{{ props.profile.nick }}
+ @{{ props.profile.handle }}
+
+ Nickname
+ |
+
+
+
+ This is the name others will identify you by. By default, it's equal to your handle.
+
+ |
+
+ Your bio
+ |
+
+
+
+ This is your bio. It's a short piece of text that's visible on your profile. By default, it's empty.
+
+ |
+
+ Name
+ |
+
+
+
+ This is the name of the link you're creating.
+
+ |
+
+ Url
+ |
+
+
+
+ This is the url of the link you're creating.
+
+ |
+
+ + | +
- Nickname
+ {{ $t("profile_edit.nickname") }}
|
- This is the name others will identify you by. By default, it's equal to your handle.
+ {{ $t("profile_edit.nickname_description") }}
|
- Your bio
+ {{ $t("profile_edit.your_bio") }}
|
- This is your bio. It's a short piece of text that's visible on your profile. By
- default, it's empty.
+ {{ $t("profile_edit.your_bio_description") }}
|