-
Notifications
You must be signed in to change notification settings - Fork 5
/
LeaguesListScreen.js
87 lines (77 loc) · 2.68 KB
/
LeaguesListScreen.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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import React, { Fragment, Component } from "react";
import { Query } from "react-apollo";
import { ActivityIndicator } from "react-native";
import * as Amplitude from 'expo-analytics-amplitude';
import LeaguesList from "../base/LeaguesList";
import LeaguesQuery from "../graphql/LeaguesQuery";
import AddLeagueFromLink from "../base/AddLeagueFromLink.js";
import LEAGUE_IDS from "../../graphql/LeagueIds";
class LeaguesListScreen extends Component {
static navigationOptions = {
title: "Leagues"
};
_openLeague(leagueId, allLeagues) {
if (this.props.navigation.isFocused()) {
const league = allLeagues.find(league => league.id === leagueId);
Amplitude.logEventWithProperties("OpenLeague", { leagueId });
this.props.navigation.navigate("League", {
leagueId,
leagueTitle: league.title
});
}
}
_openLeagueScanner() {
this.props.navigation.navigate("LeagueScanner");
}
_openCreateLeague() {
this.props.navigation.navigate("CreateLeague");
}
_openLeaguesList() {
this.props.navigation.navigate("LeaguesList");
}
render() {
return (
<Query query={LEAGUE_IDS}>
{({ data }) => {
if (!data.leagueIds)
return <ActivityIndicator style={{ marginTop: 40 }} />;
const leagueIds = data.leagueIds.filter(
leagueId => leagueId !== null
);
return (
<LeaguesQuery leagueIds={leagueIds}>
{({ data, refetch, networkStatus }) => {
let content;
if (!data || data.loading) {
content = <ActivityIndicator style={{ marginTop: 40 }} />;
} else {
content = (
<Fragment>
<AddLeagueFromLink
leagueIds={leagueIds}
openLeague={id => this._openLeague(id, data.leagues)}
openLeaguesList={() =>
this._openLeaguesList(data.leagues)
}
/>
<LeaguesList
leagues={data.leagues}
openLeague={id => this._openLeague(id, data.leagues)}
openLeagueScanner={this._openLeagueScanner.bind(this)}
openCreateLeague={this._openCreateLeague.bind(this)}
refreshing={networkStatus === 4}
refetch={refetch}
/>
</Fragment>
);
}
return content;
}}
</LeaguesQuery>
);
}}
</Query>
);
}
}
export default LeaguesListScreen;