Skip to content

Commit 6a0c066

Browse files
authored
Merge pull request #2202 from StoDevX/krlx
Add KRLX tab to Streaming Media
2 parents 34c2e94 + 0b02f31 commit 6a0c066

File tree

9 files changed

+218
-116
lines changed

9 files changed

+218
-116
lines changed

images/news-images.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// @flow
22
export const newsImages = {
3-
ksto: require('./streaming/ksto/ksto-logo.png'),
4-
mess: require('./news/mess.png'),
5-
oleville: require('./news/oleville.png'),
6-
politicole: require('./news/politicole.png'),
7-
stolaf: require('./news/stolaf.png'),
3+
ksto: require('./streaming/ksto.png'),
4+
mess: require('./news/mess.png'),
5+
oleville: require('./news/oleville.png'),
6+
politicole: require('./news/politicole.png'),
7+
stolaf: require('./news/stolaf.png'),
88
}

images/streaming/krlx.png

13.3 KB
Loading
File renamed without changes.

source/navigation.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@ import CalendarView, {EventDetail as EventDetailView} from './views/calendar'
88
import {ContactsView, ContactsDetailView} from './views/contacts'
99
import {DictionaryView, DictionaryDetailView} from './views/dictionary'
1010
import {HomeView, EditHomeView} from './views/home'
11-
import StreamingView, {KSTOScheduleView} from './views/streaming'
11+
import StreamingView, {
12+
KSTOScheduleView,
13+
KRLXScheduleView,
14+
} from './views/streaming'
1215
import {
1316
MenusView,
1417
CarletonBurtonMenuScreen,
@@ -83,6 +86,7 @@ export const AppNavigator = StackNavigator(
8386
SISView: {screen: SISView},
8487
StreamingView: {screen: StreamingView},
8588
KSTOScheduleView: {screen: KSTOScheduleView},
89+
KRLXScheduleView: {screen: KRLXScheduleView},
8690
StudentOrgsDetailView: {screen: StudentOrgsDetailView},
8791
StudentOrgsView: {screen: StudentOrgsView},
8892
TransportationView: {screen: TransportationView},

source/views/streaming/index.js

Lines changed: 49 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,65 @@
11
// @flow
22

3+
import * as React from 'react'
34
import {TabNavigator} from '../components/tabbed-view'
5+
import {TabBarIcon} from '../components/tabbar-icon'
46

5-
import {KSTOView} from './radio'
7+
import {RadioControllerView} from './radio'
68
// import WeeklyMovieView from './movie'
79
import {WebcamsView} from './webcams'
810
import {StreamListView} from './streams'
911

10-
export {KSTOScheduleView} from './radio'
12+
export {KSTOScheduleView, KRLXScheduleView} from './radio'
1113

1214
export default TabNavigator(
1315
{
1416
StreamingView: {screen: StreamListView},
1517
LiveWebcamsView: {screen: WebcamsView},
16-
KSTORadioView: {screen: KSTOView},
18+
KSTORadioView: {
19+
screen: ({navigation}) => (
20+
<RadioControllerView
21+
image={require('../../../images/streaming/ksto.png')}
22+
navigation={navigation}
23+
playerUrl="https://www.stolaf.edu/multimedia/play/embed/ksto.html"
24+
scheduleViewName="KSTOScheduleView"
25+
source={{
26+
useEmbeddedPlayer: true,
27+
embeddedPlayerUrl:
28+
'https://www.stolaf.edu/multimedia/play/embed/ksto.html',
29+
streamSourceUrl: '',
30+
}}
31+
stationName="KSTO 93.1 FM"
32+
stationNumber="+15077863602"
33+
title="St. Olaf College Radio"
34+
/>
35+
),
36+
navigationOptions: {
37+
tabBarLabel: 'KSTO',
38+
tabBarIcon: TabBarIcon('radio'),
39+
},
40+
},
41+
KRLXRadioView: {
42+
screen: ({navigation}) => (
43+
<RadioControllerView
44+
image={require('../../../images/streaming/krlx.png')}
45+
navigation={navigation}
46+
playerUrl="http://live.krlx.org"
47+
scheduleViewName="KRLXScheduleView"
48+
source={{
49+
useEmbeddedPlayer: false,
50+
embeddedPlayerUrl: 'http://live.krlx.org',
51+
streamSourceUrl: 'http://radio.krlx.org/mp3/high_quality',
52+
}}
53+
stationName="88.1 KRLX-FM"
54+
stationNumber="+15072224127"
55+
title="Carleton College Radio"
56+
/>
57+
),
58+
navigationOptions: {
59+
tabBarLabel: 'KRLX',
60+
tabBarIcon: TabBarIcon('microphone'),
61+
},
62+
},
1763
// WeeklyMovieView: {screen: WeeklyMovieView},
1864
},
1965
{

source/views/streaming/radio/controller.js

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import {
1212
} from 'react-native'
1313
import noop from 'lodash/noop'
1414
import * as c from '../../components/colors'
15-
import {TabBarIcon} from '../../components/tabbar-icon'
1615
import {callPhone} from '../../components/call-phone'
1716
import {Row} from '../../components/layout'
1817
import type {TopLevelViewPropsType} from '../../types'
@@ -21,11 +20,19 @@ import type {PlayState, HtmlAudioError, Viewport} from './types'
2120
import {ActionButton, ShowCalendarButton, CallButton} from './buttons'
2221
import {openUrl} from '../../components/open-url'
2322

24-
const image = require('../../../../images/streaming/ksto/ksto-logo.png')
25-
const stationNumber = '+15077863602'
26-
const kstoLiveUrl = 'https://www.stolaf.edu/multimedia/play/embed/ksto.html'
27-
28-
type Props = TopLevelViewPropsType
23+
type Props = TopLevelViewPropsType & {
24+
image: number,
25+
playerUrl: string,
26+
stationNumber: string,
27+
title: string,
28+
scheduleViewName: string,
29+
stationName: string,
30+
source: {
31+
useEmbeddedPlayer: boolean,
32+
embeddedPlayerUrl: string,
33+
streamSourceUrl: string,
34+
},
35+
}
2936

3037
type State = {
3138
playState: PlayState,
@@ -34,12 +41,7 @@ type State = {
3441
viewport: Viewport,
3542
}
3643

37-
export class KSTOView extends React.PureComponent<Props, State> {
38-
static navigationOptions = {
39-
tabBarLabel: 'KSTO',
40-
tabBarIcon: TabBarIcon('radio'),
41-
}
42-
44+
export class RadioControllerView extends React.PureComponent<Props, State> {
4345
state = {
4446
playState: 'paused',
4547
streamError: null,
@@ -84,15 +86,15 @@ export class KSTOView extends React.PureComponent<Props, State> {
8486
}
8587

8688
openSchedule = () => {
87-
this.props.navigation.navigate('KSTOScheduleView')
89+
this.props.navigation.navigate(this.props.scheduleViewName)
8890
}
8991

9092
callStation = () => {
91-
callPhone(stationNumber)
93+
callPhone(this.props.stationNumber)
9294
}
9395

9496
openStreamWebsite = () => {
95-
openUrl(kstoLiveUrl)
97+
openUrl(this.props.playerUrl)
9698
}
9799

98100
renderPlayButton = (state: PlayState) => {
@@ -156,18 +158,18 @@ export class KSTOView extends React.PureComponent<Props, State> {
156158
<View style={[styles.logoWrapper, sideways && landscape.logoWrapper]}>
157159
<Image
158160
resizeMode="contain"
159-
source={image}
161+
source={this.props.image}
160162
style={[styles.logo, logoSize]}
161163
/>
162164
</View>
163165

164166
<View style={styles.container}>
165167
<View style={styles.titleWrapper}>
166168
<Text selectable={true} style={styles.heading}>
167-
St. Olaf College Radio
169+
{this.props.title}
168170
</Text>
169171
<Text selectable={true} style={styles.subHeading}>
170-
KSTO 93.1 FM
172+
{this.props.stationName}
171173
</Text>
172174

173175
{error}
@@ -183,14 +185,17 @@ export class KSTOView extends React.PureComponent<Props, State> {
183185

184186
{Platform.OS !== 'android' ? (
185187
<StreamPlayer
188+
embeddedPlayerUrl={this.props.source.embeddedPlayerUrl}
186189
onEnded={this.handleStreamEnd}
187190
// onWaiting={this.handleStreamWait}
188191
onError={this.handleStreamError}
189192
// onStalled={this.handleStreamStall}
190193
onPause={this.handleStreamPause}
191194
onPlay={this.handleStreamPlay}
192195
playState={this.state.playState}
196+
streamSourceUrl={this.props.source.streamSourceUrl}
193197
style={styles.webview}
198+
useEmbeddedPlayer={this.props.source.useEmbeddedPlayer}
194199
/>
195200
) : null}
196201
</View>
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
// @flow
22

3-
export {KSTOView} from './controller'
4-
export {KSTOScheduleView} from './schedule'
3+
export {RadioControllerView} from './controller'
4+
export {KSTOScheduleView, KRLXScheduleView} from './schedule'

0 commit comments

Comments
 (0)