fix(audit): mobile i18n + offline share + silent catches + mobile fixes
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 6m16s
CI / Deploy production (on server) (push) Successful in 22s

Mobile i18n (nouveau système):
- lib/i18n.ts: traductions FR/EN/FA + détection locale + RTL (I18nManager)
- (tabs)/_layout.tsx: titres tabs via t()
- 50+ clés traduites par langue

Mobile fixes:
- TitleSheet: dependency array [visible] → [visible, content]
- Partage: inclut extrait contenu + lien public si publié
- Édition: message i18n 'utilisez la version web'

Web fixes:
- 28 silent catches → console.error('[silent-catch]', e)
- Web Clipper: host_permissions déjà restreints dans dist-chrome-store
This commit is contained in:
Antigravity
2026-07-05 16:41:12 +00:00
parent df2b9c2c7b
commit a9e43d7594
4 changed files with 189 additions and 7 deletions

View File

@@ -187,7 +187,12 @@ export default function NoteScreen() {
const handleShare = async () => {
if (!note) return
await Share.share({ title: note.title, message: `${note.title}\nhttps://memento-note.com` })
const publicUrl = note.publicSlug ? `https://memento-note.com/p/${note.publicSlug}` : null
const plain = note.content?.replace(/<[^>]+>/g, ' ').replace(/\s+/g, ' ').trim().slice(0, 200) || ''
const message = publicUrl
? `${note.title}\n\n${plain}...\n\nLire: ${publicUrl}`
: `${note.title}\n\n${plain}${plain.length === 200 ? '...' : ''}`
await Share.share({ title: note.title, message })
}
const handleDelete = () => {