-
Notifications
You must be signed in to change notification settings - Fork 0
/
App.js
72 lines (63 loc) · 2.01 KB
/
App.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import React, { Component } from "react";
import { Root } from "native-base";
import TrackPlayer from "react-native-track-player";
import AppContainer from "./src/components/AppContainer";
import BackgroundFetch from "react-native-background-fetch";
import NetInfo from "@react-native-community/netinfo";
import RNExitApp from "react-native-exit-app";
import PlaybackStore from "./src/stores/Playback";
import getCurrentShowInfo from "./src/utils/show-fetcher";
export default class App extends Component {
_restartPlayback = async () => {
AppStore.mediaPlayerClosed = false;
AppStore.stationError = false;
this._setRepeatSpacer();
if (PlaybackStore.structure.title !== "Offline") {
await TrackPlayer.add(PlaybackStore.structure);
await TrackPlayer.play().then(PlaybackStore.stationLoaded = true);
} else {
this._stationError();
}
}
_setRepeatSpacer() {
let s = PlaybackStore.structure.title + "";
if (s.length >= 25 || s === s.toUpperCase() && s.length >= 20) PlaybackStore.repeatSpacer = 50;
else PlaybackStore.repeatSpacer = 250 - s.length;
}
componentDidMount() {
this._onStateChanged = TrackPlayer.addEventListener("playback-state", (data) => {
PlaybackStore.playbackState = data.state;
})
BackgroundFetch.configure({
minimumFetchInterval: 15,
stopOnTerminate: false,
startOnBoot: true
}, async () => {
NetInfo.fetch().then(async (state) => {
if (state.isConnected) {
if (typeof PlaybackStore.structure.id !== "undefined") {
let show = await getCurrentShowInfo(PlaybackStore.structure.id);
if (PlaybackStore.structure.title !== show.title) {
PlaybackStore.structure.title = show.title;
PlaybackStore.stationLoaded = false;
await TrackPlayer.reset();
this._restartPlayback();
}
}
}
});
BackgroundFetch.finish(BackgroundFetch.FETCH_RESULT_NEW_DATA);
});
}
componentWillUnmount() {
this._onStateChanged.remove();
RNExitApp.exitApp();
}
render() {
return (
<Root>
<AppContainer />
</Root>
);
}
}