1
Fork 0

Compare commits

..

No commits in common. "48742a98641e75b1d14858cb474c8ea14a80696b" and "02af7391e7214ec3d2a634f490627cf4b9cff774" have entirely different histories.

9 changed files with 35 additions and 45 deletions

View File

@ -4,7 +4,7 @@ import {
createIntroductionUnderstood, createIntroductionUnderstood,
} from "../storage/common.js"; } from "../storage/common.js";
import {introductionSteps} from "../tours/introduction.js"; import {introductionSteps} from "../tours/introduction.js";
import {TourId, tourIdsAndSteps} from "../tours/exports.js"; import {tourIdsAndSteps} from "../tours/exports.js";
/** The main entry point for the content script. */ /** The main entry point for the content script. */
async function main(): Promise<void> { async function main(): Promise<void> {
@ -26,7 +26,7 @@ async function main(): Promise<void> {
// If a different tour is selected but the introduction hasn't happened yet, // If a different tour is selected but the introduction hasn't happened yet,
// then the main function will be rerun once this tour finishes. // then the main function will be rerun once this tour finishes.
startTour( startTour(
TourId.Introduction, "introduction",
introductionSteps, introductionSteps,
[], [],
startsWithPrefix && anchorTourId !== "introduction", startsWithPrefix && anchorTourId !== "introduction",

View File

@ -1,5 +1,4 @@
import {Component, type JSX} from "preact"; import {Component, type JSX} from "preact";
import {TourId} from "../../tours/exports.js";
type Props = { type Props = {
hasBeenCompleted: boolean; hasBeenCompleted: boolean;
@ -8,7 +7,7 @@ type Props = {
}; };
function tourDescription(tourId: Props["tourId"]): JSX.Element { function tourDescription(tourId: Props["tourId"]): JSX.Element {
if (tourId === TourId.Introduction) { if (tourId === "introduction") {
return ( return (
<p class="tour-description"> <p class="tour-description">
A short introduction to Tildes Shepherd and how the tours work. Normally A short introduction to Tildes Shepherd and how the tours work. Normally
@ -17,7 +16,7 @@ function tourDescription(tourId: Props["tourId"]): JSX.Element {
); );
} }
if (tourId === TourId.InterfaceHomepage) { if (tourId === "interface-homepage") {
return ( return (
<p class="tour-description"> <p class="tour-description">
Let's take a look at the home page and all we can do there. Let's take a look at the home page and all we can do there.
@ -39,8 +38,8 @@ function tourLink(tourId: Props["tourId"]): string {
let path = ""; let path = "";
switch (tourId) { switch (tourId) {
case TourId.InterfaceHomepage: case "interface-homepage":
case TourId.Introduction: { case "introduction": {
path = "/"; path = "/";
break; break;
} }

View File

@ -1,6 +1,5 @@
import {Component, type JSX} from "preact"; import {Component, type JSX} from "preact";
import {createToursCompleted} from "../../storage/common.js"; import {createToursCompleted} from "../../storage/common.js";
import {TourId} from "../../tours/exports.js";
import {Tour} from "./tour.js"; import {Tour} from "./tour.js";
type Props = Record<string, unknown>; type Props = Record<string, unknown>;
@ -35,8 +34,8 @@ export class Tours extends Component<Props, State> {
}; };
const tourProps: Array<Tour["props"]> = [ const tourProps: Array<Tour["props"]> = [
createTour(TourId.Introduction, "Introduction"), createTour("introduction", "Introduction"),
createTour(TourId.InterfaceHomepage, "The Homepage"), createTour("interface-homepage", "The Homepage"),
]; ];
return ( return (

View File

@ -1,6 +1,5 @@
import browser from "webextension-polyfill"; import browser from "webextension-polyfill";
import {createValue} from "@holllo/webextension-storage"; import {createValue} from "@holllo/webextension-storage";
import {type TourId} from "../tours/exports.js";
export enum StorageKey { export enum StorageKey {
IntroductionUnderstood = "introduction-understood", IntroductionUnderstood = "introduction-understood",

View File

@ -1,14 +1,11 @@
import {homepageEventHandlers, homepageSteps} from "./interface/exports.js"; import {homepageSteps, homepageEventHandlers} from "./interface/exports.js";
import {introductionSteps} from "./introduction.js"; import {introductionSteps} from "./introduction.js";
export enum TourId { export const tourIds = ["introduction", "interface-homepage"] as const;
InterfaceHomepage = "interface-homepage",
Introduction = "introduction",
}
export const tourIdsAndSteps: Array< export const tourIdsAndSteps: Array<
[TourId, TourStepOptions[], TourStepEventHandler[]] [TourId, TourStepOptions[], TourStepEventHandler[]]
> = [ > = [
[TourId.Introduction, introductionSteps, []], ["introduction", introductionSteps, []],
[TourId.InterfaceHomepage, homepageSteps, homepageEventHandlers], ["interface-homepage", homepageSteps, homepageEventHandlers],
]; ];

View File

@ -5,11 +5,30 @@ import {
removeAllDatasetCounters, removeAllDatasetCounters,
renderInContainer, renderInContainer,
} from "../utilities.js"; } from "../utilities.js";
import {LoggedOutWarning} from "../shared/logged-out-warning.js";
const userIsLoggedIn =
document.querySelector(".logged-in-user-username") !== null;
const step01 = renderInContainer( const step01 = renderInContainer(
<> <>
<LoggedOutWarning /> {userIsLoggedIn ? (
""
) : (
<p class="tish-warning">
It looks like you aren't logged in to Tildes. Tildes Shepherd assumes
that you are logged in as a lot of the Tildes interface isn't shown to
logged out users.
<br />
To still let anyone without an account benefit from the extension you
may continue, however, know that certain parts of the tour <b>
will
</b>{" "}
break and look weird.
<br />
It's highly recommended that you exit the tour, log in and start it
again.
</p>
)}
<h1>The Homepage</h1> <h1>The Homepage</h1>

View File

@ -1 +0,0 @@
export * from "./logged-out-warning.js";

View File

@ -1,24 +0,0 @@
import {type JSX} from "preact";
export function LoggedOutWarning(): JSX.Element {
const userIsLoggedIn =
document.querySelector(".logged-in-user-username") !== null;
if (userIsLoggedIn) {
return <></>;
}
return (
<p class="tish-warning">
It looks like you aren't logged in to Tildes. Tildes Shepherd assumes that
you are logged in as a lot of the Tildes interface isn't shown to logged
out users.
<br />
To still let anyone without an account benefit from the extension you may
continue, however, know that certain parts of the tour <b>will</b> break
and look weird.
<br />
It's highly recommended that you exit the tour, log in and start it again.
</p>
);
}

2
source/types.d.ts vendored
View File

@ -1,10 +1,12 @@
import type Shepherd from "shepherd.js"; import type Shepherd from "shepherd.js";
import type {tourIds} from "./tours/exports.js";
declare global { declare global {
const $browser: "chromium" | "firefox"; const $browser: "chromium" | "firefox";
const $dev: boolean; const $dev: boolean;
const $test: boolean; const $test: boolean;
type TourId = (typeof tourIds)[number];
type TourStepEvent = "show" | "destroy"; type TourStepEvent = "show" | "destroy";
type TourStepEventFunction = Parameters<Shepherd.Step["on"]>[1]; type TourStepEventFunction = Parameters<Shepherd.Step["on"]>[1];
type TourStepEventHandler = [string, [TourStepEvent, TourStepEventFunction]]; type TourStepEventHandler = [string, [TourStepEvent, TourStepEventFunction]];