diff --git a/packages/storyteller-stream-dashboard/src/pages/dashboard/DashboardPage.tsx b/packages/storyteller-stream-dashboard/src/pages/dashboard/DashboardPage.tsx
index f7e44ae77b..17a9b1be6b 100644
--- a/packages/storyteller-stream-dashboard/src/pages/dashboard/DashboardPage.tsx
+++ b/packages/storyteller-stream-dashboard/src/pages/dashboard/DashboardPage.tsx
@@ -1,4 +1,4 @@
-import React from "react";
+import React, { useCallback, useEffect, useState } from "react";
import { SessionWrapper } from "@storyteller/components/src/session/SessionWrapper";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faVideo, faVolumeUp } from "@fortawesome/free-solid-svg-icons";
@@ -9,12 +9,41 @@ import {
} from "@fortawesome/free-brands-svg-icons";
import { Link } from "react-router-dom";
import { MustBeLoggedInView } from "../../layout/MustBeLoggedInView";
+import { StorytellerUrlConfig } from "@storyteller/components/src/urls/StorytellerUrlConfig";
+import {
+ CheckTwitchOauth,
+ CheckTwitchOauthIsError,
+ CheckTwitchOauthIsOk,
+} from "@storyteller/components/src/api/storyteller/twitch_oauth/CheckTwitchOauth";
interface Props {
sessionWrapper: SessionWrapper;
}
function DashboardPage(props: Props) {
+ const oauthUrl = new StorytellerUrlConfig().twitchOauthEnrollRedirect();
+
+ const [oauthTokenFound, setOauthTokenFound] = useState(false);
+
+ const checkTwitchOauth = useCallback(async () => {
+ const result = await CheckTwitchOauth();
+
+ if (CheckTwitchOauthIsOk(result)) {
+ setOauthTokenFound(result.oauth_token_found);
+ } else if (CheckTwitchOauthIsError(result)) {
+ }
+ }, []);
+
+ useEffect(() => {
+ checkTwitchOauth();
+ }, [checkTwitchOauth]);
+
+ let twitchText = "Link Your Twitch";
+
+ if (oauthTokenFound) {
+ twitchText = "Re-link Your Twitch";
+ }
+
if (!props.sessionWrapper.isLoggedIn()) {
return (
<>
@@ -38,14 +67,17 @@ function DashboardPage(props: Props) {
icon={faTwitch}
className="features-icon purple-glow twitch-color dashboard-icon"
/>
-
Link Your Twitch
+ {twitchText}
Morbi dapibus commodo porta. Sed faucibus tristique orci in
tristique. Praesent quam nunc, fermentum eu feugiat sit.
-
+
+ {twitchText}
+
diff --git a/packages/storyteller-stream-dashboard/src/pages/tts_configs/TtsConfigsCreateRulePage.tsx b/packages/storyteller-stream-dashboard/src/pages/tts_configs/TtsConfigsCreateRulePage.tsx
index 7c6ac5d4d6..be890893d8 100644
--- a/packages/storyteller-stream-dashboard/src/pages/tts_configs/TtsConfigsCreateRulePage.tsx
+++ b/packages/storyteller-stream-dashboard/src/pages/tts_configs/TtsConfigsCreateRulePage.tsx
@@ -19,6 +19,7 @@ import { EventResponseComponent } from "./event_response_builder/EventResponseCo
import { TwitchEventRuleElement } from "./rule_cards/TwitchEventRuleElement";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faAngleLeft, faSave } from "@fortawesome/free-solid-svg-icons";
+import { MustBeLoggedInView } from "../../layout/MustBeLoggedInView";
interface Props {
sessionWrapper: SessionWrapper;
@@ -100,7 +101,11 @@ function TtsConfigsCreateRulePage(props: Props) {
};
if (!props.sessionWrapper.isLoggedIn()) {
- return
Must Log In
;
+ return (
+ <>
+
+ >
+ );
}
// NB: This is a hypothetical version of what we'll update to
diff --git a/packages/storyteller-stream-dashboard/src/pages/tts_configs/TtsConfigsDeleteRulePage.tsx b/packages/storyteller-stream-dashboard/src/pages/tts_configs/TtsConfigsDeleteRulePage.tsx
index ac8e79c552..d9af3f53ae 100644
--- a/packages/storyteller-stream-dashboard/src/pages/tts_configs/TtsConfigsDeleteRulePage.tsx
+++ b/packages/storyteller-stream-dashboard/src/pages/tts_configs/TtsConfigsDeleteRulePage.tsx
@@ -12,6 +12,7 @@ import { Link, useHistory, useParams } from "react-router-dom";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faAngleLeft, faTrash } from "@fortawesome/free-solid-svg-icons";
import { TtsModelListItem } from "@storyteller/components/src/api/tts/ListTtsModels";
+import { MustBeLoggedInView } from "../../layout/MustBeLoggedInView";
interface Props {
sessionWrapper: SessionWrapper;
@@ -57,7 +58,11 @@ function TtsConfigsDeleteRulePage(props: Props) {
};
if (!props.sessionWrapper.isLoggedIn()) {
- return Must Log In
;
+ return (
+ <>
+
+ >
+ );
}
if (twitchEventRule === undefined) {
diff --git a/packages/storyteller-stream-dashboard/src/pages/tts_configs/TtsConfigsEditRulePage.tsx b/packages/storyteller-stream-dashboard/src/pages/tts_configs/TtsConfigsEditRulePage.tsx
index 117d2208a5..4f242d73fd 100644
--- a/packages/storyteller-stream-dashboard/src/pages/tts_configs/TtsConfigsEditRulePage.tsx
+++ b/packages/storyteller-stream-dashboard/src/pages/tts_configs/TtsConfigsEditRulePage.tsx
@@ -19,6 +19,7 @@ import { EventResponse } from "@storyteller/components/src/api/storyteller/twitc
import { TtsModelListItem } from "@storyteller/components/src/api/tts/ListTtsModels";
import { EventResponseComponent } from "./event_response_builder/EventResponseComponent";
import { EventMatchPredicateBuilderComponent } from "./event_match_predicate_builder/EventMatchPredicateBuilderComponent";
+import { MustBeLoggedInView } from "../../layout/MustBeLoggedInView";
interface Props {
sessionWrapper: SessionWrapper;
@@ -116,7 +117,11 @@ function TtsConfigsEditRulePage(props: Props) {
};
if (!props.sessionWrapper.isLoggedIn()) {
- return Must Log In
;
+ return (
+ <>
+
+ >
+ );
}
if (twitchEventRule === undefined) {
diff --git a/packages/storyteller-stream-dashboard/src/pages/tts_configs/TtsConfigsReorderPage.tsx b/packages/storyteller-stream-dashboard/src/pages/tts_configs/TtsConfigsReorderPage.tsx
index 0cd0b49263..766b5f3534 100644
--- a/packages/storyteller-stream-dashboard/src/pages/tts_configs/TtsConfigsReorderPage.tsx
+++ b/packages/storyteller-stream-dashboard/src/pages/tts_configs/TtsConfigsReorderPage.tsx
@@ -19,6 +19,7 @@ import { faSave } from "@fortawesome/free-solid-svg-icons";
import { TtsModelListItem } from "@storyteller/components/src/api/tts/ListTtsModels";
import { useHistory, useParams } from "react-router-dom";
import { ReorderableTwitchEventRuleElement } from "./rule_cards/ReorderableTwitchEventRuleElement";
+import { MustBeLoggedInView } from "../../layout/MustBeLoggedInView";
interface Props {
sessionWrapper: SessionWrapper;
@@ -133,7 +134,11 @@ function TtsConfigsReorderPage(props: Props) {
};
if (!props.sessionWrapper.isLoggedIn()) {
- return Must Log In
;
+ return (
+ <>
+
+ >
+ );
}
return (