mirror of
https://github.com/Qortal/chrome-extension.git
synced 2025-03-28 08:15:55 +00:00
184 lines
5.5 KiB
TypeScript
184 lines
5.5 KiB
TypeScript
import React, { useCallback, useEffect, useState } from "react";
|
|
import { saveToLocalStorage } from "../Apps/AppsNavBar";
|
|
import creationImg from './img/creation.webp'
|
|
import dashboardImg from './img/dashboard.webp'
|
|
import groupsImg from './img/groups.webp'
|
|
import importantImg from './img/important.webp'
|
|
import navigationImg from './img/navigation.webp'
|
|
import overviewImg from './img/overview.webp'
|
|
import startedImg from './img/started.webp'
|
|
|
|
const checkIfGatewayIsOnline = async () => {
|
|
try {
|
|
const url = `https://ext-node.qortal.link/admin/status`;
|
|
const response = await fetch(url, {
|
|
method: "GET",
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
},
|
|
});
|
|
const data = await response.json();
|
|
if (data?.height) {
|
|
return true
|
|
}
|
|
return false
|
|
|
|
} catch (error) {
|
|
return false
|
|
|
|
}
|
|
}
|
|
export const useHandleTutorials = () => {
|
|
const [openTutorialModal, setOpenTutorialModal] = useState<any>(null);
|
|
const [shownTutorials, setShowTutorials] = useState(null)
|
|
|
|
useEffect(()=> {
|
|
try {
|
|
const storedData = localStorage.getItem('shown-tutorials');
|
|
|
|
|
|
if (storedData) {
|
|
setShowTutorials(JSON.parse(storedData));
|
|
} else {
|
|
setShowTutorials({})
|
|
}
|
|
} catch (error) {
|
|
//error
|
|
}
|
|
}, [])
|
|
|
|
const saveShowTutorial = useCallback((type)=> {
|
|
try {
|
|
|
|
setShowTutorials((prev)=> {
|
|
return {
|
|
...(prev || {}),
|
|
[type]: true
|
|
}
|
|
})
|
|
saveToLocalStorage('shown-tutorials', type, true)
|
|
} catch (error) {
|
|
//error
|
|
}
|
|
}, [])
|
|
const showTutorial = useCallback(async (type, isForce) => {
|
|
try {
|
|
|
|
const isOnline = await checkIfGatewayIsOnline()
|
|
if(!isOnline) return
|
|
switch (type) {
|
|
case "create-account":
|
|
{
|
|
if((shownTutorials || {})['create-account'] && !isForce) return
|
|
saveShowTutorial('create-account')
|
|
setOpenTutorialModal({
|
|
title: "Account Creation",
|
|
resource: {
|
|
name: "a-test",
|
|
service: "VIDEO",
|
|
identifier: "account-creation-hub",
|
|
poster: creationImg
|
|
},
|
|
});
|
|
}
|
|
break;
|
|
case "important-information":
|
|
{
|
|
if((shownTutorials || {})['important-information'] && !isForce) return
|
|
saveShowTutorial('important-information')
|
|
|
|
setOpenTutorialModal({
|
|
title: "Important Information!",
|
|
resource: {
|
|
name: "a-test",
|
|
service: "VIDEO",
|
|
identifier: "important-information-hub",
|
|
poster: importantImg
|
|
},
|
|
});
|
|
}
|
|
break;
|
|
case "getting-started":
|
|
{
|
|
if((shownTutorials || {})['getting-started'] && !isForce) return
|
|
saveShowTutorial('getting-started')
|
|
|
|
setOpenTutorialModal({
|
|
multi: [
|
|
|
|
{
|
|
title: "1. Getting Started",
|
|
resource: {
|
|
name: "a-test",
|
|
service: "VIDEO",
|
|
identifier: "getting-started-hub",
|
|
poster: startedImg
|
|
},
|
|
},
|
|
{
|
|
title: "2. Overview",
|
|
resource: {
|
|
name: "a-test",
|
|
service: "VIDEO",
|
|
identifier: "overview-hub",
|
|
poster: overviewImg
|
|
},
|
|
},
|
|
{
|
|
title: "3. Qortal Groups",
|
|
resource: {
|
|
name: "a-test",
|
|
service: "VIDEO",
|
|
identifier: "groups-hub",
|
|
poster: groupsImg
|
|
},
|
|
},
|
|
],
|
|
});
|
|
}
|
|
break;
|
|
case "qapps":
|
|
{
|
|
if((shownTutorials || {})['qapps'] && !isForce) return
|
|
saveShowTutorial('qapps')
|
|
|
|
setOpenTutorialModal({
|
|
multi: [
|
|
{
|
|
title: "1. Apps Dashboard",
|
|
resource: {
|
|
name: "a-test",
|
|
service: "VIDEO",
|
|
identifier: "apps-dashboard-hub",
|
|
poster: dashboardImg
|
|
},
|
|
},
|
|
{
|
|
title: "2. Apps Navigation",
|
|
resource: {
|
|
name: "a-test",
|
|
service: "VIDEO",
|
|
identifier: "apps-navigation-hub",
|
|
poster: navigationImg
|
|
},
|
|
}
|
|
],
|
|
});
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
} catch (error) {
|
|
//error
|
|
}
|
|
}, [shownTutorials]);
|
|
return {
|
|
showTutorial,
|
|
openTutorialModal,
|
|
hasSeenGettingStarted: shownTutorials === null ? null : !!(shownTutorials || {})['getting-started'],
|
|
setOpenTutorialModal,
|
|
shownTutorialsInitiated: !!shownTutorials
|
|
};
|
|
};
|