···5050 const s = useSearch(search);
5151 const [showBookmarks, setShowBookmarks] = useState(false);
5252 const [showWatching, setShowWatching] = useState(false);
5353+ // const modal = useModal("notice");
53545455 const handleClick = (path: To) => {
5556 window.scrollTo(0, 0);
···58595960 const enableDiscover = usePreferencesStore((state) => state.enableDiscover);
60616161- /*
6262- // Safari Notice
6363- const [showModal, setShowModal] = useState(() => {
6464- const isSafari =
6565- typeof navigator !== "undefined" &&
6666- /Safari/.test(navigator.userAgent) &&
6767- !/Chrome/.test(navigator.userAgent);
6868-6969- const isMac =
7070- typeof navigator !== "undefined" && /Mac/.test(navigator.platform);
7171-7272- const isIOS =
7373- typeof navigator !== "undefined" &&
7474- /iPhone|iPad|iPod/.test(navigator.userAgent);
7575-7676- return isSafari && (isMac || isIOS);
7777- });
7878- */
7979-8080- /* One time notice
8181- const [showModal, setShowModal] = useState(false);
8282-8383- useEffect(() => {
8484- const isDismissed = localStorage.getItem("popupDismissed");
8585- if (!isDismissed) {
8686- setShowModal(true);
8787- }
8888- }, []);
8989-9090- const handleCloseModal = () => {
9191- setShowModal(false);
9292- localStorage.setItem("popupDismissed", "true");
9393- };
9494- */
9595-9662 // const { loggedIn } = useAuth(); // Adjust padding for popup show button based on logged in state
97639864 return (
9965 <HomeLayout showBg={showBg}>
100100- {/* Popup show button
101101- <a
102102- onClick={() => setShowModal(true)}
6666+ {/* <a
6767+ onClick={() => modal.show()}
10368 className={` text-white tabbable rounded-full z-50 fixed top-5 ${
10469 loggedIn
10570 ? "right-[7.5rem] lg:right-[12.5rem] lg:text-2xl"
···11075 <IconPill icon={Icons.WARNING}>
11176 <span className="font-bold select-none">READ</span>
11277 </IconPill>
113113- </a>
114114- */}
7878+ </a> */}
11579 <div className="mb-16 sm:mb-24">
11680 <Helmet>
11781 <style type="text/css">{`
···12286 <title>{t("global.name")}</title>
12387 </Helmet>
12488125125- {/* Popup
126126- {showModal && (
127127- <PopupModal
128128- styles="max-w-2xl" // max-w-md for short
129129- title="We’re changing our backend server!"
130130- message={
131131- <div>
132132- <p>
133133- On <strong>January 8th</strong>, the backend server will
134134- change from:
135135- </p>
136136- <p>
137137- <strong>server.vidbinge.com</strong> →{" "}
138138- <strong>server.fifthwit.tech</strong>
139139- </p>
140140- <br />
141141- <p>
142142- You will need to <strong>migrate your account </strong> to the
143143- new server or choose to continue using the old server by
144144- updating your settings.
145145- </p>
146146- <br />
147147- <p>
148148- <strong>What You Need to Know:</strong>
149149- </p>
150150- <ul>
151151- <li>
152152- 1. <strong>Migrating Your Account:</strong> Your data (e.g.,
153153- bookmarks) will not be automatically transferred. You’ll
154154- need to migrate your account from the settings page. Or from
155155- below.
156156- </li>
157157- <li>
158158- 2. <strong>Staying on the Old Server:</strong> If you don’t
159159- want to change to the new server, your data will remain safe
160160- on <strong>server.vidbinge.com</strong>. You can change the
161161- Backend URL in your settings to
162162- "https://server.vidbinge.com".
163163- </li>
164164- </ul>
165165- <br />
166166- <p>
167167- <strong>Steps to Move Your Data:</strong>
168168- </p>
169169- <ol>
170170- <li>
171171- 1. Log into your account on{" "}
172172- <strong>server.vidbinge.com</strong>.
173173- </li>
174174- <li>
175175- (If you already are logged in, press here:{" "}
176176- <a href="/migration" className="text-type-link">
177177- Migrate my data.
178178- </a>
179179- )
180180- </li>
181181- <li>
182182- 2. Go to the <strong>Settings</strong> page.
183183- </li>
184184- <li>
185185- 3. Scroll down to{" "}
186186- <strong>Connections > Custom Server</strong>.
187187- </li>
188188- <li>
189189- 3. Press the "Migrate my data to a new server."
190190- button.
191191- </li>
192192- <li>
193193- 4. Enter the new server url:{" "}
194194- <strong>https://server.fifthwit.tech</strong> and press
195195- "Migrate".
196196- </li>
197197- <li>5. Login to your account with the same passphrase!</li>
198198- </ol>
199199- <br />
200200- <p>
201201- Thank you for your understanding and support during this
202202- transition! If you have questions or need help, feel free to
203203- reach out on the{" "}
204204- <a
205205- href="https://discord.com/invite/7z6znYgrTG"
206206- target="_blank"
207207- rel="noopener noreferrer"
208208- className="text-type-link"
209209- >
210210- P-Stream Discord
211211- </a>
212212- !
213213- </p>
214214- </div>
215215- }
216216- onClose={handleCloseModal}
217217- />
218218- )}
8989+ {/* Popup
9090+ <FancyModal
9191+ id="notice"
9292+ title="We're changing our backend server!"
9393+ oneTime
9494+ >
9595+ <div>
9696+ <p>
9797+ On <strong>January 8th</strong>, the backend server will change
9898+ from:
9999+ </p>
100100+ <p>
101101+ <strong>server.vidbinge.com</strong> →{" "}
102102+ <strong>server.fifthwit.tech</strong>
103103+ </p>
104104+ <br />
105105+ <p>
106106+ You will need to <strong>migrate your account </strong> to the new
107107+ server or choose to continue using the old server by updating your
108108+ settings.
109109+ </p>
110110+ <br />
111111+ <p>
112112+ <strong>What You Need to Know:</strong>
113113+ </p>
114114+ <ul>
115115+ <li>
116116+ 1. <strong>Migrating Your Account:</strong> Your data (e.g.,
117117+ bookmarks) will not be automatically transferred. You'll
118118+ need to migrate your account from the settings page. Or from
119119+ below.
120120+ </li>
121121+ <li>
122122+ 2. <strong>Staying on the Old Server:</strong> If you don't
123123+ want to change to the new server, your data will remain safe on{" "}
124124+ <strong>server.vidbinge.com</strong>. You can change the Backend
125125+ URL in your settings to "https://server.vidbinge.com".
126126+ </li>
127127+ </ul>
128128+ <br />
129129+ <p>
130130+ <strong>Steps to Move Your Data:</strong>
131131+ </p>
132132+ <ol>
133133+ <li>
134134+ 1. Log into your account on <strong>server.vidbinge.com</strong>
135135+ .
136136+ </li>
137137+ <li>
138138+ (If you already are logged in, press here:{" "}
139139+ <a href="/migration" className="text-type-link">
140140+ Migrate my data.
141141+ </a>
142142+ )
143143+ </li>
144144+ <li>
145145+ 2. Go to the <strong>Settings</strong> page.
146146+ </li>
147147+ <li>
148148+ 3. Scroll down to{" "}
149149+ <strong>Connections > Custom Server</strong>.
150150+ </li>
151151+ <li>
152152+ 3. Press the "Migrate my data to a new server."
153153+ button.
154154+ </li>
155155+ <li>
156156+ 4. Enter the new server url:{" "}
157157+ <strong>https://server.fifthwit.tech</strong> and press
158158+ "Migrate".
159159+ </li>
160160+ <li>5. Login to your account with the same passphrase!</li>
161161+ </ol>
162162+ <br />
163163+ <p>
164164+ Thank you for your understanding and support during this
165165+ transition! If you have questions or need help, feel free to reach
166166+ out on the{" "}
167167+ <a
168168+ href="https://discord.com/invite/7z6znYgrTG"
169169+ target="_blank"
170170+ rel="noopener noreferrer"
171171+ className="text-type-link"
172172+ >
173173+ P-Stream Discord
174174+ </a>
175175+ !
176176+ </p>
177177+ </div>
178178+ </FancyModal>
219179 */}
220180221181 <HeroPart searchParams={searchParams} setIsSticky={setShowBg} />
+58-68
src/pages/onboarding/Onboarding.tsx
···88import { Stepper } from "@/components/layout/Stepper";
99import { BiggerCenterContainer } from "@/components/layout/ThinContainer";
1010import { VerticalLine } from "@/components/layout/VerticalLine";
1111-import { Modal, ModalCard, useModal } from "@/components/overlays/Modal";
1111+import {
1212+ FancyModal,
1313+ Modal,
1414+ ModalCard,
1515+ useModal,
1616+} from "@/components/overlays/Modal";
1217import {
1318 StatusCircle,
1419 StatusCircleProps,
···3338import { useAuthStore } from "@/stores/auth";
3439import { getProxyUrls } from "@/utils/proxyUrls";
35403636-import { PopupModal } from "../parts/home/PopupModal";
3741import { Status, testFebboxToken } from "../parts/settings/SetupPart";
38423943async function getFebboxTokenStatus(febboxToken: string | null) {
···179183export function OnboardingPage() {
180184 const navigate = useNavigateOnboarding();
181185 const skipModal = useModal("skip");
186186+ const infoModal = useModal("info");
182187 const { completeAndRedirect } = useRedirectBack();
183188 const { t } = useTranslation();
184189 const noProxies = getProxyUrls().length === 0;
···188193 /Safari/.test(navigator.userAgent) &&
189194 !/Chrome/.test(navigator.userAgent) &&
190195 !/Edg/.test(navigator.userAgent);
191191-192192- const [showModal, setShowModal] = useState(false);
193193-194194- const handleCloseModal = () => {
195195- setShowModal(false);
196196- };
197196198197 return (
199198 <MinimalPageLayout>
···216215 </div>
217216 </ModalCard>
218217 </Modal>
219219- {showModal && (
220220- <PopupModal
221221- styles="max-w-2xl" // max-w-md for short max-w-2xl long
222222- title="Understanding a setup"
223223- message={
224224- <div>
225225- <p>
226226- P-Stream doesn't host videos. It relies on third-party
227227- websites for content, so you need to choose how it connects to
228228- those sites.
229229- <br />
230230- <br />
231231- <strong>Your Options:</strong>
232232- <br />
233233- <strong>1. Extension (Recommended)</strong>
234234- <br />
235235- The extension gives you access to the most sources. It acts as a
236236- local proxy and can handle sites that need special cookies or
237237- headers to load.
238238- <br />
239239- <br />
240240- <strong>2. Proxy</strong>
241241- <br />
242242- The proxy scrapes media from other websites. It bypasses browser
243243- restrictions (like CORS) to allow scraping.
244244- <br />
245245- <br />
246246- <strong>3. Default Setup</strong>
218218+ <FancyModal id={infoModal.id} title="Understanding a setup" size="xl">
219219+ <div>
220220+ <p>
221221+ P-Stream doesn't host videos. It relies on third-party websites
222222+ for content, so you need to choose how it connects to those sites.
223223+ <br />
224224+ <br />
225225+ <strong>Your Options:</strong>
226226+ <br />
227227+ <strong>1. Extension (Recommended)</strong>
228228+ <br />
229229+ The extension gives you access to the most sources. It acts as a
230230+ local proxy and can handle sites that need special cookies or
231231+ headers to load.
232232+ <br />
233233+ <br />
234234+ <strong>2. Proxy</strong>
235235+ <br />
236236+ The proxy scrapes media from other websites. It bypasses browser
237237+ restrictions (like CORS) to allow scraping.
238238+ <br />
239239+ <br />
240240+ <strong>3. Default Setup</strong>
241241+ <br />
242242+ Uses P-Stream's built-in proxy. It's the easiest option
243243+ but might be slower due to shared bandwidth.
244244+ <br />
245245+ <br />
246246+ {conf().ALLOW_FEBBOX_KEY && (
247247+ <>
248248+ <strong>Optional FED API (Febbox) UI token</strong>
247249 <br />
248248- Uses P-Stream's built-in proxy. It's the easiest
249249- option but might be slower due to shared bandwidth.
250250+ Bringing your own Febbox account allows you to unlock FED API,
251251+ our best source with 4K quality, Dolby Atmos, the most content,
252252+ and the best (fastest) load times. This the highly recommended!
250253 <br />
251254 <br />
252252- {conf().ALLOW_FEBBOX_KEY && (
253253- <>
254254- <strong>Optional FED API (Febbox) UI token</strong>
255255- <br />
256256- Bringing your own Febbox account allows you to unlock FED
257257- API, our best source with 4K quality, Dolby Atmos, the most
258258- content, and the best (fastest) load times. This the highly
259259- recommended!
260260- <br />
261261- <br />
262262- </>
263263- )}
264264- If you have more questions on how this works, feel free to ask
265265- on the{" "}
266266- <a
267267- href="https://discord.com/invite/7z6znYgrTG"
268268- target="_blank"
269269- rel="noopener noreferrer"
270270- className="text-type-link"
271271- >
272272- P-Stream Discord
273273- </a>{" "}
274274- server!
275275- </p>
276276- </div>
277277- }
278278- onClose={handleCloseModal}
279279- />
280280- )}
255255+ </>
256256+ )}
257257+ If you have more questions on how this works, feel free to ask on
258258+ the{" "}
259259+ <a
260260+ href="https://discord.com/invite/7z6znYgrTG"
261261+ target="_blank"
262262+ rel="noopener noreferrer"
263263+ className="text-type-link"
264264+ >
265265+ P-Stream Discord
266266+ </a>{" "}
267267+ server!
268268+ </p>
269269+ </div>
270270+ </FancyModal>
281271 <BiggerCenterContainer>
282272 <Stepper steps={2} current={1} className="mb-12" />
283273 <Heading2 className="!mt-0 !text-3xl">
···287277 {t("onboarding.start.explainer")}
288278 <div
289279 className="pt-4 flex cursor-pointer items-center text-type-link"
290290- onClick={() => setShowModal(true)}
280280+ onClick={() => infoModal.show()}
291281 >
292282 <p>More info</p>
293283 <Icon className="pl-2" icon={Icons.CIRCLE_QUESTION} />