Replaces the placeholder "Hubungi Koordinator" row with two real
contacts pulled from backend config (support_handles_json), and drops
the "Hapus Akun" CTA. Mirrors the figma BestieProfile design but uses
the same WA/TG channel as the customer Tanya Admin sheet — business
decided the same ops team triages both audiences.
Backend:
- Promote support-handles route from /api/client to /api/shared
(renamed file + export). Both apps now consume the same endpoint;
hitting /api/client/* from mitra would violate the per-app
convention in mitra_app/CLAUDE.md.
- client_app provider updated to /api/shared/support-handles.
Mitra app:
- New support_handles_provider mirroring the client_app one. Adds a
`displayHandle` getter that strips the URL scheme for the subtitle
("https://wa.me/X" → "wa.me/X", "https://t.me/Y" → "t.me/Y") so the
row looks like the figma without exposing raw URLs.
- Profil screen now lists: Chat WhatsApp Kami, Chat Telegram Kami,
Syarat & Ketentuan, Kebijakan Privasi. Danger zone simplified to
Keluar only — mitras request account deletion through the same
WA/TG channels (no separate self-service path).
- url_launcher added as a runtime dep, launches deeplinks in
externalApplication mode with graceful snackbar fallback when
parsing or launching fails.
Updates [[feedback-mitra-internal-audience]] — pre-login rule still
holds (no admin CTAs on S3a/S3b/AccountInactive), but the post-login
Profil tab now does surface WA/TG. Overrides decided 2026-05-21.
Verified on emulator-5556: Profil tab renders both rows with handles
from `wa.me/6285173310010` + `t.me/halobestie`, Keluar present, no
Hapus Akun button.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
90 lines
2.4 KiB
YAML
90 lines
2.4 KiB
YAML
name: mitra_app
|
|
description: Halo Bestie - Mitra App
|
|
|
|
publish_to: 'none'
|
|
version: 1.0.0+1
|
|
|
|
environment:
|
|
sdk: '>=3.0.0 <4.0.0'
|
|
|
|
dependencies:
|
|
flutter:
|
|
sdk: flutter
|
|
|
|
# Firebase (Messaging only — Auth dropped in Phase 3.4, self-managed JWT now)
|
|
firebase_core: ^2.27.1
|
|
firebase_messaging: ^14.7.15
|
|
|
|
# Secure token storage (refresh + access)
|
|
flutter_secure_storage: ^9.2.2
|
|
|
|
# HTTP & WebSocket
|
|
dio: ^5.4.3
|
|
web_socket_channel: ^2.4.5
|
|
|
|
# State management
|
|
flutter_riverpod: ^2.6.1
|
|
hooks_riverpod: ^2.6.1
|
|
riverpod_annotation: ^2.6.1
|
|
flutter_hooks: ^0.20.5
|
|
|
|
# Navigation
|
|
go_router: ^13.2.1
|
|
flutter_local_notifications: ^21.0.0
|
|
url_launcher: ^6.3.0
|
|
|
|
dev_dependencies:
|
|
flutter_test:
|
|
sdk: flutter
|
|
flutter_lints: ^3.0.0
|
|
riverpod_generator: ^2.6.2
|
|
build_runner: ^2.4.13
|
|
custom_lint: ^0.7.0
|
|
riverpod_lint: ^2.6.2
|
|
# Generates launcher icons for Android + iOS from a single source PNG.
|
|
# Config block below; run `dart run flutter_launcher_icons` to regenerate.
|
|
flutter_launcher_icons: ^0.13.1
|
|
# In-repo lint rules — shared with client_app from the repo root. Adds
|
|
# the `no_ref_in_dispose` rule and any future repo-wide guardrails.
|
|
# See halo_lints/lib/halo_lints.dart and mitra_app/CLAUDE.md → Pitfalls.
|
|
halo_lints:
|
|
path: ../halo_lints
|
|
|
|
# Launcher-icon config. White background per the design-system rule
|
|
# documented in client_app/lib/core/theme/halo_tokens.dart: when the logo
|
|
# is full-color (mitra logo is pink on transparent), use surface #FFFFFF.
|
|
# Monochrome/white logos use brandLogoBg #FF699F (see client_app config).
|
|
flutter_launcher_icons:
|
|
android: true
|
|
ios: true
|
|
image_path: "assets/icons/logo.png"
|
|
remove_alpha_ios: true
|
|
background_color_ios: "#FFFFFF"
|
|
min_sdk_android: 24
|
|
adaptive_icon_background: "#FFFFFF"
|
|
adaptive_icon_foreground: "assets/icons/logo.png"
|
|
|
|
flutter:
|
|
uses-material-design: true
|
|
assets:
|
|
- assets/images/
|
|
- assets/images/splash/
|
|
- assets/fonts/
|
|
|
|
fonts:
|
|
- family: BricolageGrotesque
|
|
fonts:
|
|
- asset: assets/fonts/BricolageGrotesque-Variable.ttf
|
|
- family: Poppins
|
|
fonts:
|
|
- asset: assets/fonts/Poppins-Regular.ttf
|
|
- asset: assets/fonts/Poppins-Medium.ttf
|
|
weight: 500
|
|
- asset: assets/fonts/Poppins-SemiBold.ttf
|
|
weight: 600
|
|
- asset: assets/fonts/Poppins-Bold.ttf
|
|
weight: 700
|
|
- family: JetBrainsMono
|
|
fonts:
|
|
- asset: assets/fonts/JetBrainsMono-Variable.ttf
|