Skip to content

Commit 76f6f4d

Browse files
Mivikclaude
andcommitted
feat: profile page shows #id label and supports copying username
- Add small gray #id label below username on profile page - Click username copies it to clipboard with toast feedback - Add name-copied translation to en-US, zh-CN, zh-TW Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 885d266 commit 76f6f4d

4 files changed

Lines changed: 23 additions & 0 deletions

File tree

phira/locales/en-US/profile.ftl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,5 @@ load-record-failed = Failed to load records.
1717
last-login = Last login: { $time }
1818
badge-admin = Admin
1919
badge-sponsor = Sponsor
20+
21+
name-copied = Name copied.

phira/locales/zh-CN/profile.ftl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,5 @@ load-record-failed = 加载游玩记录失败
1717
last-login = 最近登录:{ $time }
1818
badge-admin = 管理员
1919
badge-sponsor = 赞助者
20+
21+
name-copied = 名称已复制

phira/locales/zh-TW/profile.ftl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,5 @@ load-record-failed = 載入遊玩紀錄失敗
1717
last-login = 上次登入於:{ $time }
1818
badge-admin = 管理員
1919
badge-sponsor = 贊助者
20+
21+
name-copied = 名稱已複製

phira/src/scene/profile.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ pub struct ProfileScene {
4646
icon_user: SafeTexture,
4747

4848
btn_back: RectButton,
49+
btn_name: RectButton,
4950
btn_open_web: DRectButton,
5051
btn_logout: DRectButton,
5152
btn_delete: DRectButton,
@@ -86,6 +87,7 @@ impl ProfileScene {
8687
icon_user,
8788

8889
btn_back: RectButton::new(),
90+
btn_name: RectButton::new(),
8991
btn_open_web: DRectButton::new(),
9092
btn_logout: DRectButton::new(),
9193
btn_delete: DRectButton::new(),
@@ -260,6 +262,13 @@ impl Scene for ProfileScene {
260262
self.sf.next(t, NextScene::Pop);
261263
return Ok(true);
262264
}
265+
if self.btn_name.touch(touch) {
266+
if let Some(user) = &self.user {
267+
unsafe { get_internal_gl() }.quad_context.clipboard_set(&user.name);
268+
show_message(tl!("name-copied")).ok();
269+
}
270+
return Ok(true);
271+
}
263272
if self.btn_open_web.touch(touch, t) {
264273
open_url(&format!("https://phira.moe/user/{}", self.id))?;
265274
return Ok(true);
@@ -346,6 +355,14 @@ impl Scene for ProfileScene {
346355
.max_width(mw)
347356
.color(user.name_color())
348357
.draw();
358+
self.btn_name.set(ui, r);
359+
let r = ui
360+
.text(format!("#{}", self.id))
361+
.size(0.35)
362+
.pos(cx, r.bottom() + 0.01)
363+
.anchor(0.5, 0.)
364+
.color(semi_white(0.5))
365+
.draw();
349366
let r = ui
350367
.text(format!("RKS {:.2}", user.rks))
351368
.size(0.5)

0 commit comments

Comments
 (0)