mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-24 12:09:51 +02:00
feat: soe friendlier checks
This commit is contained in:
1 parent
d86af7e7ab
commit
db4c207708
2 files changed
+77
-116
No files matched your search
+77
-114
@@ -1,19 +1,10 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import {
|
import { Button, Flex, Heading, Link, Text } from '@radix-ui/themes';
|
||||||
AlertDialog,
|
|
||||||
Button,
|
|
||||||
Flex,
|
|
||||||
Heading,
|
|
||||||
Link,
|
|
||||||
Text,
|
|
||||||
} from '@radix-ui/themes';
|
|
||||||
import { usePathname } from 'next/navigation';
|
import { usePathname } from 'next/navigation';
|
||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
import { WARGAMING_APPLICATION_ID } from '../../constants/wargamingApplicationID';
|
import { WARGAMING_APPLICATION_ID } from '../../constants/wargamingApplicationID';
|
||||||
import { idToRegion } from '../../core/blitz/idToRegion';
|
import { idToRegion } from '../../core/blitz/idToRegion';
|
||||||
import isDev from '../../core/blitzkit/isDev';
|
|
||||||
import { isLocalhost } from '../../core/blitzkit/isLocalhost';
|
|
||||||
import * as App from '../../stores/app';
|
import * as App from '../../stores/app';
|
||||||
import { CURRENT_POLICIES_AGREEMENT_INDEX } from '../../stores/app/constants';
|
import { CURRENT_POLICIES_AGREEMENT_INDEX } from '../../stores/app/constants';
|
||||||
import { PatreonAuthResponse } from '../auth/[provider]/page';
|
import { PatreonAuthResponse } from '../auth/[provider]/page';
|
||||||
@@ -26,15 +17,11 @@ interface Extension {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
const DEV_BUILD_AGREEMENT_COOLDOWN = 8 * 24 * 60 * 60 * 1000;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wargaming: 14 (refresh: 7)
|
* Wargaming: 14 (refresh: 7)
|
||||||
* Patreon: 31 (refresh: 15)
|
* Patreon: 31 (refresh: 15)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export function Checks() {
|
export function Checks() {
|
||||||
const [showDevBuildAlert, setShowDevBuildAlert] = useState(false);
|
|
||||||
const mutateApp = App.useMutation();
|
const mutateApp = App.useMutation();
|
||||||
const logins = App.use((state) => state.logins);
|
const logins = App.use((state) => state.logins);
|
||||||
const appStore = App.useStore();
|
const appStore = App.useStore();
|
||||||
@@ -46,17 +33,27 @@ export function Checks() {
|
|||||||
const [showPoliciesAgreement, setShowPoliciesAgreement] = useState(false);
|
const [showPoliciesAgreement, setShowPoliciesAgreement] = useState(false);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setShowDevBuildAlert(
|
function unsubscribe() {
|
||||||
isDev() &&
|
window.removeEventListener('scroll', show);
|
||||||
!isLocalhost() &&
|
window.removeEventListener('pointermove', show);
|
||||||
Date.now() - appStore.getState().devBuildAgreementTime >=
|
window.removeEventListener('pointerdown', show);
|
||||||
DEV_BUILD_AGREEMENT_COOLDOWN,
|
}
|
||||||
);
|
|
||||||
}, []);
|
function show() {
|
||||||
useEffect(() => {
|
setShowPoliciesAgreement(true);
|
||||||
setShowPoliciesAgreement(
|
unsubscribe();
|
||||||
policiesAgreementIndex !== CURRENT_POLICIES_AGREEMENT_INDEX && !isLegal,
|
}
|
||||||
);
|
|
||||||
|
if (
|
||||||
|
policiesAgreementIndex !== CURRENT_POLICIES_AGREEMENT_INDEX &&
|
||||||
|
!isLegal
|
||||||
|
) {
|
||||||
|
window.addEventListener('scroll', show);
|
||||||
|
window.addEventListener('pointermove', show);
|
||||||
|
window.addEventListener('pointerdown', show);
|
||||||
|
}
|
||||||
|
|
||||||
|
return unsubscribe;
|
||||||
}, [policiesAgreementIndex, isLegal]);
|
}, [policiesAgreementIndex, isLegal]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -121,102 +118,68 @@ export function Checks() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (!showPoliciesAgreement) return null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<Flex
|
||||||
<AlertDialog.Root open={showDevBuildAlert}>
|
align="end"
|
||||||
<AlertDialog.Content>
|
style={{
|
||||||
<AlertDialog.Title>Experimental version!</AlertDialog.Title>
|
position: 'fixed',
|
||||||
<AlertDialog.Description>
|
top: 0,
|
||||||
This version may have a lot of issues. Report issues to{' '}
|
left: 0,
|
||||||
<a href="https://discord.gg/nDt7AjGJQH" target="_blank">
|
width: '100%',
|
||||||
the official Discord server
|
height: '100%',
|
||||||
</a>
|
background: 'var(--color-overlay)',
|
||||||
. Also consider using{' '}
|
zIndex: 2,
|
||||||
<a href="https://blitzkit.app/">the more stable release version</a>.
|
}}
|
||||||
You will be asked again in 8 days.
|
>
|
||||||
</AlertDialog.Description>
|
<Flex
|
||||||
|
p="8"
|
||||||
<Flex justify="end">
|
style={{
|
||||||
<Button
|
width: '100%',
|
||||||
variant="solid"
|
background: 'var(--color-panel-solid)',
|
||||||
onClick={() => {
|
}}
|
||||||
setShowDevBuildAlert(false);
|
justify="center"
|
||||||
appStore.setState({ devBuildAgreementTime: Date.now() });
|
>
|
||||||
}}
|
|
||||||
>
|
|
||||||
Continue
|
|
||||||
</Button>
|
|
||||||
</Flex>
|
|
||||||
</AlertDialog.Content>
|
|
||||||
</AlertDialog.Root>
|
|
||||||
|
|
||||||
{showPoliciesAgreement && (
|
|
||||||
<Flex
|
<Flex
|
||||||
align="end"
|
align="start"
|
||||||
|
gap="4"
|
||||||
style={{
|
style={{
|
||||||
position: 'fixed',
|
maxWidth: 640 * 2,
|
||||||
top: 0,
|
|
||||||
left: 0,
|
|
||||||
width: '100%',
|
|
||||||
height: '100%',
|
|
||||||
background: 'var(--color-overlay)',
|
|
||||||
zIndex: 2,
|
|
||||||
}}
|
}}
|
||||||
|
direction="column"
|
||||||
>
|
>
|
||||||
<Flex
|
<Flex direction="column" gap="2">
|
||||||
p="8"
|
<Heading>
|
||||||
style={{
|
{policiesAgreementIndex === -1
|
||||||
width: '100%',
|
? "BlitzKit's policies"
|
||||||
background: 'var(--color-panel-solid)',
|
: "BlitzKit's policies have changed"}
|
||||||
}}
|
</Heading>
|
||||||
justify="center"
|
|
||||||
>
|
|
||||||
<Flex
|
|
||||||
align="start"
|
|
||||||
gap="4"
|
|
||||||
style={{
|
|
||||||
maxWidth: 640 * 2,
|
|
||||||
}}
|
|
||||||
direction="column"
|
|
||||||
>
|
|
||||||
<Flex direction="column" gap="2">
|
|
||||||
<Heading>
|
|
||||||
{policiesAgreementIndex === -1
|
|
||||||
? "BlitzKit's policies"
|
|
||||||
: "BlitzKit's policies have changed"}
|
|
||||||
</Heading>
|
|
||||||
|
|
||||||
<Text>
|
<Text>
|
||||||
This website utilizes cookies to perform analytics and
|
This website utilizes cookies to perform analytics and personalize
|
||||||
personalize your experience. You can learn more through{' '}
|
your experience. You can learn more through{' '}
|
||||||
<Link href="/docs/legal/privacy-policy">
|
<Link href="/docs/legal/privacy-policy">our privacy policy</Link>.
|
||||||
our privacy policy
|
You may opt out of personalized advertizement by visiting{' '}
|
||||||
</Link>
|
<Link href="https://optout.aboutads.info/">WebChoices</Link>. By
|
||||||
. You may opt out of personalized advertizement by visiting{' '}
|
using BlitzKit, you also agree to our{' '}
|
||||||
<Link href="https://www.google.com/settings/ads">
|
<Link href="/docs/legal/terms-of-service">terms of service</Link>.
|
||||||
Google Ad Settings
|
</Text>
|
||||||
</Link>
|
|
||||||
. By using BlitzKit, you also agree to our{' '}
|
|
||||||
<Link href="/docs/legal/terms-of-service">
|
|
||||||
terms of service
|
|
||||||
</Link>
|
|
||||||
.
|
|
||||||
</Text>
|
|
||||||
</Flex>
|
|
||||||
|
|
||||||
<Button
|
|
||||||
onClick={() => {
|
|
||||||
appStore.setState({
|
|
||||||
policiesAgreementIndex: CURRENT_POLICIES_AGREEMENT_INDEX,
|
|
||||||
});
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
I Agree
|
|
||||||
</Button>
|
|
||||||
</Flex>
|
|
||||||
</Flex>
|
</Flex>
|
||||||
|
|
||||||
|
<Button
|
||||||
|
mt="2"
|
||||||
|
onClick={() => {
|
||||||
|
appStore.setState({
|
||||||
|
policiesAgreementIndex: CURRENT_POLICIES_AGREEMENT_INDEX,
|
||||||
|
});
|
||||||
|
setShowPoliciesAgreement(false);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
I agree
|
||||||
|
</Button>
|
||||||
</Flex>
|
</Flex>
|
||||||
)}
|
</Flex>
|
||||||
</>
|
</Flex>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -18,7 +18,6 @@ interface PatreonLogin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface App {
|
export interface App {
|
||||||
devBuildAgreementTime: number;
|
|
||||||
developerMode: boolean;
|
developerMode: boolean;
|
||||||
logins: {
|
logins: {
|
||||||
wargaming?: WargamingLogin;
|
wargaming?: WargamingLogin;
|
||||||
@@ -32,7 +31,6 @@ export const { Provider, use, useMutation, useStore } = createNextSafeStore(
|
|||||||
create<App>()(
|
create<App>()(
|
||||||
persist(
|
persist(
|
||||||
(set) => ({
|
(set) => ({
|
||||||
devBuildAgreementTime: 0,
|
|
||||||
developerMode: false,
|
developerMode: false,
|
||||||
policiesAgreementIndex: -1,
|
policiesAgreementIndex: -1,
|
||||||
logins: {},
|
logins: {},
|
||||||
|
|||||||
Reference in new issue
Block a user