Files
musicshare/apps/mobile/src/app/share-setup.tsx
T
chrisandClaude Opus 5.5 3568b71e90 Mobile: redesign, onboarding, QR codes, logo, Spotify setup
- Redesign matching the web: album-art backdrops, Reanimated equalizer,
  spinning live ring, drifting ambient background, gradient buttons with
  spring press feedback and haptics, Space Grotesk headings, animated feed
  (enter + layout transitions); fix invisible tab labels
- Four-step onboarding for new accounts: which app you listen with (sets
  where songs open), the matching share setup, find friends (search,
  scan, invite), and a featured song. Skippable; stored server-side
- QR codes: My code (share link) and an in-app scanner (camera only, no
  microphone permission)
- Spotify setup via Last.fm or ListenBrainz with guided linking; Android
  shares Spotify automatically through the phone reader
- New logo as app icon, adaptive/monochrome icon and splash
- app.config.ts allows cleartext only for local http:// test builds

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MzFywujuH9TiuXbr9vjoX8
2026-10-05 19:16:40 -04:00

27 lines
989 B
TypeScript

import { router } from 'expo-router';
import { useEffect } from 'react';
import { Platform, StyleSheet } from 'react-native';
import { Screen } from '@/components/Screen';
import { AndroidShareSetup } from '@/components/setup/AndroidShareSetup';
import { AppleMusicSetup } from '@/components/setup/AppleMusicSetup';
import { markSetupSeen } from '@/lib/setup';
import { space } from '@/lib/theme';
const close = () => (router.canGoBack() ? router.back() : router.replace('/'));
/** Standalone "share what you're playing" (from the feed card), outside onboarding. */
export default function ShareSetupScreen() {
useEffect(() => {
markSetupSeen();
}, []);
return (
<Screen edges={['top', 'bottom']} contentContainerStyle={styles.content}>
{Platform.OS === 'ios' ? <AppleMusicSetup onDone={close} /> : <AndroidShareSetup onDone={close} />}
</Screen>
);
}
const styles = StyleSheet.create({
content: { flexGrow: 1, justifyContent: 'center', gap: space.xl },
});