Share what's playing in any Android music app
A local Expo module listens to system media sessions (the only way Android exposes other apps' playback, gated by notification access; we never read notifications). It filters to known music apps, debounces and deduplicates changes, sends a heartbeat while playing, and delivers reports through WorkManager so they survive the app being closed. - One-screen onboarding that doubles as Google Play's prominent disclosure, opening straight to the app's toggle in Android settings - Only media notifications are pre-ticked on that settings screen - Device registration is single-flight (several screens react to the same permission change) and self-heals if the server revokes a token - Sign-out revokes the phone's token; resuming sharing re-sends the current track immediately - Pause controls in Settings and on the feed - Fix invisible tab icons and labels on Android - Keep Metro out of build output so it doesn't exhaust file watchers Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MzFywujuH9TiuXbr9vjoX8
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
// https://docs.expo.dev/guides/customizing-metro/
|
||||
const { getDefaultConfig } = require('expo/metro-config');
|
||||
|
||||
const config = getDefaultConfig(__dirname);
|
||||
|
||||
// Metro watches the whole monorepo. Keep it out of build output (Gradle, Xcode,
|
||||
// Next.js, tsup): those folders hold tens of thousands of files, and exhausting
|
||||
// the OS file-watch limit makes Metro silently stop picking up code changes.
|
||||
const buildOutput = [
|
||||
/[/\\]apps[/\\]mobile[/\\]android[/\\]/,
|
||||
/[/\\]apps[/\\]mobile[/\\]ios[/\\]/,
|
||||
/[/\\]modules[/\\][^/\\]+[/\\]android[/\\]build[/\\]/,
|
||||
/[/\\]apps[/\\]web[/\\]\.next[/\\]/,
|
||||
/[/\\]apps[/\\]api[/\\]dist[/\\]/,
|
||||
/[/\\]\.turbo[/\\]/,
|
||||
];
|
||||
const existing = config.resolver.blockList;
|
||||
config.resolver.blockList = [...(Array.isArray(existing) ? existing : existing ? [existing] : []), ...buildOutput];
|
||||
|
||||
module.exports = config;
|
||||
Reference in New Issue
Block a user