tangled
alpha
login
or
join now
stream.place
/
streamplace
74
fork
atom
Live video on the AT Protocol
74
fork
atom
overview
issues
1
pulls
pipelines
just wrap them all instead of wrapping pages individually
Natalie B.
6 months ago
e1a5e5ea
7ade87fd
+86
-88
8 changed files
expand all
collapse all
unified
split
js
app
components
provider
provider.shared.tsx
src
screens
chat-popout.tsx
embed.tsx
info-widget-embed.tsx
live-dashboard.tsx
mobile-go-live.tsx
mobile-stream.tsx
multi.tsx
+37
-27
js/app/components/provider/provider.shared.tsx
···
3
3
LinkingOptions,
4
4
NavigationContainer,
5
5
} from "@react-navigation/native";
6
6
-
import { StreamplaceProvider as ZustandStreamplaceProvider } from "@streamplace/components";
6
6
+
import {
7
7
+
ThemeProvider,
8
8
+
StreamplaceProvider as ZustandStreamplaceProvider,
9
9
+
} from "@streamplace/components";
7
10
import { ToastProvider, ToastViewport } from "@tamagui/toast";
8
11
import { useFonts } from "expo-font";
9
12
import BlueskyProvider from "features/bluesky/blueskyProvider";
···
26
29
}) {
27
30
return (
28
31
<TamaguiProvider config={config} defaultTheme={"dark"}>
29
29
-
<NavigationContainer theme={DarkTheme} linking={linking}>
30
30
-
<ReduxProvider store={store}>
31
31
-
<StreamplaceProvider>
32
32
-
<BlueskyProvider>
33
33
-
<NewStreamplaceProvider>
34
34
-
<PortalProvider>
35
35
-
<ToastProvider
36
36
-
swipeDirection="vertical"
37
37
-
duration={6000}
38
38
-
native={
39
39
-
[
40
40
-
/* uncomment the next line to do native toasts on mobile. NOTE: it'll require you making a dev build and won't work with Expo Go */
41
41
-
// 'mobile'
42
42
-
]
43
43
-
}
44
44
-
>
45
45
-
<FontProvider>{children}</FontProvider>
46
46
-
<CurrentToast />
47
47
-
<ToastViewport name="default" top="$8" left={0} right={0} />
48
48
-
</ToastProvider>
49
49
-
</PortalProvider>
50
50
-
</NewStreamplaceProvider>
51
51
-
</BlueskyProvider>
52
52
-
</StreamplaceProvider>
53
53
-
</ReduxProvider>
54
54
-
</NavigationContainer>
32
32
+
<ThemeProvider forcedTheme="dark">
33
33
+
<NavigationContainer theme={DarkTheme} linking={linking}>
34
34
+
<ReduxProvider store={store}>
35
35
+
<StreamplaceProvider>
36
36
+
<BlueskyProvider>
37
37
+
<NewStreamplaceProvider>
38
38
+
<PortalProvider>
39
39
+
<ToastProvider
40
40
+
swipeDirection="vertical"
41
41
+
duration={6000}
42
42
+
native={
43
43
+
[
44
44
+
/* uncomment the next line to do native toasts on mobile. NOTE: it'll require you making a dev build and won't work with Expo Go */
45
45
+
// 'mobile'
46
46
+
]
47
47
+
}
48
48
+
>
49
49
+
<FontProvider>{children}</FontProvider>
50
50
+
<CurrentToast />
51
51
+
<ToastViewport
52
52
+
name="default"
53
53
+
top="$8"
54
54
+
left={0}
55
55
+
right={0}
56
56
+
/>
57
57
+
</ToastProvider>
58
58
+
</PortalProvider>
59
59
+
</NewStreamplaceProvider>
60
60
+
</BlueskyProvider>
61
61
+
</StreamplaceProvider>
62
62
+
</ReduxProvider>
63
63
+
</NavigationContainer>
64
64
+
</ThemeProvider>
55
65
</TamaguiProvider>
56
66
);
57
67
}
+5
-8
js/app/src/screens/chat-popout.tsx
···
3
3
ChatBox,
4
4
LivestreamProvider,
5
5
PlayerProvider,
6
6
-
ThemeProvider,
7
6
usePlayerStore,
8
7
} from "@streamplace/components";
9
8
import emojiData from "assets/emoji-data.json";
···
19
18
}
20
19
21
20
return (
22
22
-
<ThemeProvider forcedTheme="dark">
23
23
-
<LivestreamProvider src={user}>
24
24
-
<PlayerProvider>
25
25
-
<PopoutChatInner user={user} />
26
26
-
</PlayerProvider>
27
27
-
</LivestreamProvider>
28
28
-
</ThemeProvider>
21
21
+
<LivestreamProvider src={user}>
22
22
+
<PlayerProvider>
23
23
+
<PopoutChatInner user={user} />
24
24
+
</PlayerProvider>
25
25
+
</LivestreamProvider>
29
26
);
30
27
}
31
28
+7
-10
js/app/src/screens/embed.tsx
···
3
3
Player,
4
4
PlayerProps,
5
5
PlayerProvider,
6
6
-
ThemeProvider,
7
6
} from "@streamplace/components";
8
7
import { DesktopUi } from "components/mobile/desktop-ui";
9
8
import {
···
34
33
src = url;
35
34
}
36
35
return (
37
37
-
<ThemeProvider forcedTheme="dark">
38
38
-
<LivestreamProvider src={src}>
39
39
-
<PlayerProvider {...extraProps}>
40
40
-
<Player src={src} {...extraProps}>
41
41
-
<DesktopUi />
42
42
-
</Player>
43
43
-
</PlayerProvider>
44
44
-
</LivestreamProvider>
45
45
-
</ThemeProvider>
36
36
+
<LivestreamProvider src={src}>
37
37
+
<PlayerProvider {...extraProps}>
38
38
+
<Player src={src} {...extraProps}>
39
39
+
<DesktopUi />
40
40
+
</Player>
41
41
+
</PlayerProvider>
42
42
+
</LivestreamProvider>
46
43
);
47
44
}
+16
-18
js/app/src/screens/info-widget-embed.tsx
···
1
1
-
import { Dashboard, ThemeProvider, zero } from "@streamplace/components";
1
1
+
import { Dashboard, zero } from "@streamplace/components";
2
2
import { useLiveUser } from "hooks/useLiveUser";
3
3
import { View } from "react-native";
4
4
···
7
7
export default function InfoWidgetEmbed() {
8
8
const isLive = useLiveUser();
9
9
return (
10
10
-
<ThemeProvider forcedTheme="dark">
11
11
-
<View
12
12
-
style={[
13
13
-
flex.values[1],
14
14
-
layout.flex.alignCenter,
15
15
-
layout.flex.justifyCenter,
16
16
-
p[4],
17
17
-
{
18
18
-
backgroundColor: "transparent",
19
19
-
minHeight: "100vh",
20
20
-
width: "100vw",
21
21
-
},
22
22
-
]}
23
23
-
>
24
24
-
<Dashboard.InformationWidget embedMode={true} />
25
25
-
</View>
26
26
-
</ThemeProvider>
10
10
+
<View
11
11
+
style={[
12
12
+
flex.values[1],
13
13
+
layout.flex.alignCenter,
14
14
+
layout.flex.justifyCenter,
15
15
+
p[4],
16
16
+
{
17
17
+
backgroundColor: "transparent",
18
18
+
minHeight: "100vh",
19
19
+
width: "100vw",
20
20
+
},
21
21
+
]}
22
22
+
>
23
23
+
<Dashboard.InformationWidget embedMode={true} />
24
24
+
</View>
27
25
);
28
26
}
+13
-16
js/app/src/screens/live-dashboard.tsx
···
1
1
import {
2
2
LivestreamProvider,
3
3
PlayerProvider,
4
4
-
ThemeProvider,
5
4
zero,
6
5
} from "@streamplace/components";
7
6
import { Redirect } from "components/aqlink";
···
42
41
}
43
42
44
43
return (
45
45
-
<ThemeProvider forcedTheme="dark">
46
46
-
<LivestreamProvider src={userProfile.did}>
47
47
-
<VideoElementProvider videoElement={videoElement}>
48
48
-
<PlayerProvider>
49
49
-
<View style={[flex.values[1], bg.gray[900]]}>
50
50
-
<BentoGrid
51
51
-
userProfile={userProfile}
52
52
-
isLive={isLive}
53
53
-
videoRef={videoRef}
54
54
-
/>
55
55
-
</View>
56
56
-
</PlayerProvider>
57
57
-
</VideoElementProvider>
58
58
-
</LivestreamProvider>
59
59
-
</ThemeProvider>
44
44
+
<LivestreamProvider src={userProfile.did}>
45
45
+
<VideoElementProvider videoElement={videoElement}>
46
46
+
<PlayerProvider>
47
47
+
<View style={[flex.values[1], bg.gray[900]]}>
48
48
+
<BentoGrid
49
49
+
userProfile={userProfile}
50
50
+
isLive={isLive}
51
51
+
videoRef={videoRef}
52
52
+
/>
53
53
+
</View>
54
54
+
</PlayerProvider>
55
55
+
</VideoElementProvider>
56
56
+
</LivestreamProvider>
60
57
);
61
58
}
+3
-3
js/app/src/screens/mobile-go-live.tsx
···
1
1
-
import { KeepAwake, ThemeProvider } from "@streamplace/components";
1
1
+
import { KeepAwake } from "@streamplace/components";
2
2
import { Redirect } from "components/aqlink";
3
3
import { Player } from "components/mobile/player";
4
4
import { FullscreenProvider } from "contexts/FullscreenContext";
···
13
13
}
14
14
// get player
15
15
return (
16
16
-
<ThemeProvider forcedTheme="dark">
16
16
+
<>
17
17
<KeepAwake />
18
18
<FullscreenProvider>
19
19
<Player ingest src={userProfile.did} name={userProfile.handle} />
20
20
</FullscreenProvider>
21
21
-
</ThemeProvider>
21
21
+
</>
22
22
);
23
23
}
+3
-3
js/app/src/screens/mobile-stream.tsx
···
1
1
-
import { KeepAwake, ThemeProvider } from "@streamplace/components";
1
1
+
import { KeepAwake } from "@streamplace/components";
2
2
import { Player } from "components/mobile/player";
3
3
import { PlayerProps } from "components/player/props";
4
4
import { FullscreenProvider } from "contexts/FullscreenContext";
···
20
20
useTitle(user);
21
21
22
22
return (
23
23
-
<ThemeProvider forcedTheme="dark">
23
23
+
<>
24
24
<KeepAwake />
25
25
<FullscreenProvider>
26
26
<Player src={src} {...extraProps} />
27
27
</FullscreenProvider>
28
28
-
</ThemeProvider>
28
28
+
</>
29
29
);
30
30
}
+2
-3
js/app/src/screens/multi.tsx
···
4
4
Player,
5
5
PlayerProps,
6
6
PlayerProvider,
7
7
-
ThemeProvider,
8
7
usePlayerStore,
9
8
zero,
10
9
} from "@streamplace/components";
···
69
68
}
70
69
71
70
return (
72
72
-
<ThemeProvider forcedTheme="dark">
71
71
+
<>
73
72
<KeepAwake />
74
73
<FullscreenProvider>
75
74
<View style={[flex.values[1]]}>
···
95
94
))}
96
95
</View>
97
96
</FullscreenProvider>
98
98
-
</ThemeProvider>
97
97
+
</>
99
98
);
100
99
}