react-native-media-notification 0.4.0-beta.9 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -24,6 +24,7 @@
24
24
  - 🔊 Audio Interruption Handling
25
25
  - 📱 iOS Control Center Integration
26
26
  - 🤖 Android Media3 Session Support
27
+ - 🚗 Android Auto integration
27
28
  - 🎯 TypeScript Support
28
29
  - ⚡ New Architecture (Turbo Modules) Ready
29
30
 
@@ -1 +1 @@
1
- {"version":3,"names":["MediaControls","ALL_MEDIA_EVENTS","EventEmitter","AppRegistry","Image","eventEmitter","unsubscribe","setUpNativeEventListener","onEvent","event","command","data","emit","updateMetadata","metadata","artwork","resolveAssetSource","uri","setMediaLibrary","library","stopMediaNotification","enableAudioInterruption","enabled","enableBackgroundMode","setControlEnabled","name","includes","Error","shutdown","addEventListener","handler","addListener","removeAllListeners","forEach","e","setBackgroundMessageHandler","appRegistry","registry","registerHeadlessTask","foregroundEventHandler"],"sourceRoot":"..\\..\\src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["MediaControls","ALL_MEDIA_EVENTS","EventEmitter","AppRegistry","Image","eventEmitter","unsubscribe","setUpNativeEventListener","onEvent","event","command","data","emit","updateMetadata","metadata","artwork","resolveAssetSource","uri","setMediaLibrary","library","stopMediaNotification","enableAudioInterruption","enabled","enableBackgroundMode","setControlEnabled","name","includes","Error","shutdown","addEventListener","handler","addListener","removeAllListeners","forEach","e","setBackgroundMessageHandler","appRegistry","registry","registerHeadlessTask","foregroundEventHandler"],"sourceRoot":"..\\..\\src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAsB,EAEpB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAgB,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EACL,WAAW,EACX,KAAK,iBAAiB,IAAI,uBAAuB,EAElD,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAE9E,MAAM,WAAW,kBACf,SAAQ,IAAI,CAAC,wBAAwB,EAAE,SAAS,CAAC;IACjD,OAAO,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAAC;CACxC;AAED,MAAM,MAAM,kBAAkB,GAC1B,OAAO,GACP,SAAS,GACT,OAAO,GACP,OAAO,GACP,QAAQ,GACR,OAAO,GACP,UAAU,CAAC;AAEf,MAAM,WAAW,WACf,SAAQ,IAAI,CAAC,iBAAiB,EAAE,WAAW,GAAG,OAAO,CAAC;IACtD,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;CACpC,CAAC;AAcF;;GAEG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,kBAAkB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,QAEnD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3D;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7E;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAE3D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAK5E;AAED,wBAAgB,QAAQ,IAAI,IAAI,CAE/B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,qBAAqB,KAAK,IAAI,GAC9C,iBAAiB,CAGnB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAMlE;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,IAAI,EAAE,GAAG,CAAC;CACX;AAED,KAAK,wBAAwB,GAAG,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1E;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,wBAAwB,EACjC,WAAW,CAAC,EAAE,OAAO,WAAW,QAIjC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,wBAAwB,2BAIvE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAsB,EAEpB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAgB,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EACL,WAAW,EACX,KAAK,iBAAiB,IAAI,uBAAuB,EAElD,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAE9E,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAC9C,wBAAwB,EACxB,SAAS,CACV;IACC,OAAO,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAAC;CACxC;AAED,MAAM,MAAM,kBAAkB,GAC1B,OAAO,GACP,SAAS,GACT,OAAO,GACP,OAAO,GACP,QAAQ,GACR,OAAO,GACP,UAAU,CAAC;AAEf,MAAM,WAAW,WAAY,SAAQ,IAAI,CACvC,iBAAiB,EACjB,WAAW,GAAG,OAAO,CACtB;IACC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;CACpC,CAAC;AAcF;;GAEG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,kBAAkB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,QAEnD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3D;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7E;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAE3D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAK5E;AAED,wBAAgB,QAAQ,IAAI,IAAI,CAE/B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,qBAAqB,KAAK,IAAI,GAC9C,iBAAiB,CAGnB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAMlE;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,IAAI,EAAE,GAAG,CAAC;CACX;AAED,KAAK,wBAAwB,GAAG,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1E;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,wBAAwB,EACjC,WAAW,CAAC,EAAE,OAAO,WAAW,QAIjC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,wBAAwB,2BAIvE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-media-notification",
3
- "version": "0.4.0-beta.9",
3
+ "version": "0.4.0",
4
4
  "description": "Display and manage media style notifications based on react-native-music-control",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -85,7 +85,7 @@
85
85
  "react": "19.0.0",
86
86
  "react-native": "0.79.2",
87
87
  "react-native-builder-bob": "^0.40.13",
88
- "release-it": "^19.0.4",
88
+ "release-it": "^19.1.0",
89
89
  "turbo": "^1.10.7",
90
90
  "typescript": "^5.8.3"
91
91
  },
@@ -1,80 +1,80 @@
1
- import type { TurboModule } from 'react-native';
2
- import { TurboModuleRegistry } from 'react-native';
3
- import type {
4
- EventEmitter,
5
- UnsafeObject,
6
- } from 'react-native/Libraries/Types/CodegenTypes';
7
-
8
- // Event types
9
- export const ALL_MEDIA_EVENTS = [
10
- 'play',
11
- 'pause',
12
- 'stop',
13
- 'skipToNext',
14
- 'skipToPrevious',
15
- 'seekForward',
16
- 'seekBackward',
17
- 'seek',
18
- 'shuffle',
19
- 'repeatMode',
20
- ] as const;
21
- export type MediaControl = (typeof ALL_MEDIA_EVENTS)[number];
22
-
23
- export type MediaControlEvent =
24
- | MediaControl
25
- | 'duck'
26
- | 'unDuck'
27
- | 'setMediaItems';
28
-
29
- export interface NativeMediaTrackMetadata {
30
- id?: string;
31
- title?: string;
32
- artist?: string;
33
- album?: string;
34
- duration?: number;
35
- artwork?: string;
36
- position?: number;
37
- isPlaying?: boolean;
38
- repeatMode?: 'off' | 'one' | 'all';
39
- shuffle?: boolean;
40
- }
41
-
42
- export interface NativeEvent {
43
- command: string;
44
- data: UnsafeObject; // Position in seconds for seek events
45
- }
46
-
47
- export interface NativeLibraryItem {
48
- id: string;
49
- title?: string;
50
- artist?: string;
51
- album?: string;
52
- artwork?: string;
53
- duration?: number;
54
- playable?: boolean;
55
- browsable?: boolean;
56
- mediaType?: string;
57
-
58
- items?: UnsafeObject[];
59
- }
60
-
61
- export interface Spec extends TurboModule {
62
- setControlEnabled(name: string, enabled: boolean): void;
63
- updateMetadata(metadata: NativeMediaTrackMetadata): Promise<void>;
64
- stopMediaNotification(): Promise<void>;
65
-
66
- // Audio interruption handling
67
- enableAudioInterruption(enabled: boolean): Promise<void>;
68
-
69
- // Audio session activation
70
- enableBackgroundMode(enabled: boolean): void;
71
-
72
- shutdown(): void;
73
-
74
- setMediaLibrary(library: NativeLibraryItem): void;
75
-
76
- // Event listeners (native events will be emitted)
77
- readonly onEvent: EventEmitter<NativeEvent>;
78
- }
79
-
80
- export default TurboModuleRegistry.getEnforcing<Spec>('MediaControls');
1
+ import type { TurboModule } from 'react-native';
2
+ import { TurboModuleRegistry } from 'react-native';
3
+ import type {
4
+ EventEmitter,
5
+ UnsafeObject,
6
+ } from 'react-native/Libraries/Types/CodegenTypes';
7
+
8
+ // Event types
9
+ export const ALL_MEDIA_EVENTS = [
10
+ 'play',
11
+ 'pause',
12
+ 'stop',
13
+ 'skipToNext',
14
+ 'skipToPrevious',
15
+ 'seekForward',
16
+ 'seekBackward',
17
+ 'seek',
18
+ 'shuffle',
19
+ 'repeatMode',
20
+ ] as const;
21
+ export type MediaControl = (typeof ALL_MEDIA_EVENTS)[number];
22
+
23
+ export type MediaControlEvent =
24
+ | MediaControl
25
+ | 'duck'
26
+ | 'unDuck'
27
+ | 'setMediaItems';
28
+
29
+ export interface NativeMediaTrackMetadata {
30
+ id?: string;
31
+ title?: string;
32
+ artist?: string;
33
+ album?: string;
34
+ duration?: number;
35
+ artwork?: string;
36
+ position?: number;
37
+ isPlaying?: boolean;
38
+ repeatMode?: 'off' | 'one' | 'all';
39
+ shuffle?: boolean;
40
+ }
41
+
42
+ export interface NativeEvent {
43
+ command: string;
44
+ data: UnsafeObject; // Position in seconds for seek events
45
+ }
46
+
47
+ export interface NativeLibraryItem {
48
+ id: string;
49
+ title?: string;
50
+ artist?: string;
51
+ album?: string;
52
+ artwork?: string;
53
+ duration?: number;
54
+ playable?: boolean;
55
+ browsable?: boolean;
56
+ mediaType?: string;
57
+
58
+ items?: UnsafeObject[];
59
+ }
60
+
61
+ export interface Spec extends TurboModule {
62
+ setControlEnabled(name: string, enabled: boolean): void;
63
+ updateMetadata(metadata: NativeMediaTrackMetadata): Promise<void>;
64
+ stopMediaNotification(): Promise<void>;
65
+
66
+ // Audio interruption handling
67
+ enableAudioInterruption(enabled: boolean): Promise<void>;
68
+
69
+ // Audio session activation
70
+ enableBackgroundMode(enabled: boolean): void;
71
+
72
+ shutdown(): void;
73
+
74
+ setMediaLibrary(library: NativeLibraryItem): void;
75
+
76
+ // Event listeners (native events will be emitted)
77
+ readonly onEvent: EventEmitter<NativeEvent>;
78
+ }
79
+
80
+ export default TurboModuleRegistry.getEnforcing<Spec>('MediaControls');
package/src/index.tsx CHANGED
@@ -13,8 +13,10 @@ import {
13
13
  } from 'react-native';
14
14
  import type { ImageSourcePropType } from 'react-native/Libraries/Image/Image';
15
15
 
16
- export interface MediaTrackMetadata
17
- extends Omit<NativeMediaTrackMetadata, 'artwork'> {
16
+ export interface MediaTrackMetadata extends Omit<
17
+ NativeMediaTrackMetadata,
18
+ 'artwork'
19
+ > {
18
20
  artwork?: string | ImageSourcePropType;
19
21
  }
20
22
 
@@ -27,8 +29,10 @@ export type MediaItemMediaType =
27
29
  | 'genre'
28
30
  | 'playlist';
29
31
 
30
- export interface LibraryItem
31
- extends Omit<NativeLibraryItem, 'mediaType' | 'items'> {
32
+ export interface LibraryItem extends Omit<
33
+ NativeLibraryItem,
34
+ 'mediaType' | 'items'
35
+ > {
32
36
  items?: LibraryItem[];
33
37
  mediaItem?: MediaItemMediaType;
34
38
  }