Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
frontend
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
vicotor
frontend
Commits
5102f40e
Commit
5102f40e
authored
Jan 11, 2024
by
tom
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[skip ci] refactoring
parent
d3517cc3
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
29 additions
and
15 deletions
+29
-15
consts.ts
lib/growthbook/consts.ts
+2
-0
init.ts
lib/growthbook/init.ts
+2
-3
useLoadFeatures.ts
lib/growthbook/useLoadFeatures.ts
+17
-0
getUuid.ts
lib/mixpanel/getUuid.ts
+6
-0
useInit.tsx
lib/mixpanel/useInit.tsx
+0
-8
_app.tsx
pages/_app.tsx
+2
-4
No files found.
lib/growthbook/consts.ts
0 → 100644
View file @
5102f40e
export
const
STORAGE_KEY
=
'
growthbook:experiments
'
;
export
const
STORAGE_LIMIT
=
20
;
lib/growthbook/init.ts
View file @
5102f40e
...
...
@@ -3,6 +3,8 @@ import { GrowthBook } from '@growthbook/growthbook-react';
import
config
from
'
configs/app
'
;
import
*
as
mixpanel
from
'
lib/mixpanel
'
;
import
{
STORAGE_KEY
,
STORAGE_LIMIT
}
from
'
./consts
'
;
export
interface
GrowthBookFeatures
{
test_value
:
string
;
}
...
...
@@ -37,9 +39,6 @@ export const growthBook = (() => {
});
})();
const
STORAGE_KEY
=
'
growthbook:experiments
'
;
const
STORAGE_LIMIT
=
20
;
function
getStorageValue
():
Array
<
unknown
>
|
undefined
{
const
item
=
window
.
localStorage
.
getItem
(
STORAGE_KEY
);
if
(
!
item
)
{
...
...
lib/growthbook/useLoadFeatures.ts
0 → 100644
View file @
5102f40e
import
React
from
'
react
'
;
import
{
SECOND
}
from
'
lib/consts
'
;
import
{
growthBook
}
from
'
./init
'
;
export
default
function
useLoadFeatures
()
{
React
.
useEffect
(()
=>
{
growthBook
?.
setAttributes
({
...
growthBook
.
getAttributes
(),
timezone
:
Intl
.
DateTimeFormat
().
resolvedOptions
().
timeZone
,
language
:
window
.
navigator
.
language
,
});
growthBook
?.
loadFeatures
({
timeout
:
SECOND
});
},
[]);
}
lib/mixpanel/getUuid.ts
View file @
5102f40e
import
*
as
cookies
from
'
lib/cookies
'
;
import
*
as
growthBook
from
'
lib/growthbook/consts
'
;
import
isBrowser
from
'
lib/isBrowser
'
;
export
default
function
getUuid
()
{
const
cookie
=
cookies
.
get
(
cookies
.
NAMES
.
UUID
);
...
...
@@ -10,5 +12,9 @@ export default function getUuid() {
const
uuid
=
crypto
.
randomUUID
();
cookies
.
set
(
cookies
.
NAMES
.
UUID
,
uuid
);
if
(
isBrowser
())
{
window
.
localStorage
.
removeItem
(
growthBook
.
STORAGE_KEY
);
}
return
uuid
;
}
lib/mixpanel/useInit.tsx
View file @
5102f40e
...
...
@@ -7,7 +7,6 @@ import { deviceType } from 'react-device-detect';
import
config
from
'
configs/app
'
;
import
*
as
cookies
from
'
lib/cookies
'
;
import
{
growthBook
}
from
'
lib/growthbook/init
'
;
import
getQueryParamString
from
'
lib/router/getQueryParamString
'
;
import
getUuid
from
'
./getUuid
'
;
...
...
@@ -27,13 +26,6 @@ export default function useMixpanelInit() {
const
mixpanelConfig
:
Partial
<
Config
>
=
{
debug
:
Boolean
(
debugFlagQuery
.
current
||
debugFlagCookie
),
loaded
:
function
()
{
growthBook
?.
setAttributes
({
...
growthBook
.
getAttributes
(),
timezone
:
Intl
.
DateTimeFormat
().
resolvedOptions
().
timeZone
,
language
:
window
.
navigator
.
language
,
});
},
};
const
isAuth
=
Boolean
(
cookies
.
get
(
cookies
.
NAMES
.
API_TOKEN
));
...
...
pages/_app.tsx
View file @
5102f40e
...
...
@@ -10,11 +10,11 @@ import type { NextPageWithLayout } from 'nextjs/types';
import
config
from
'
configs/app
'
;
import
useQueryClientConfig
from
'
lib/api/useQueryClientConfig
'
;
import
{
SECOND
}
from
'
lib/consts
'
;
import
{
AppContextProvider
}
from
'
lib/contexts/app
'
;
import
{
ChakraProvider
}
from
'
lib/contexts/chakra
'
;
import
{
ScrollDirectionProvider
}
from
'
lib/contexts/scrollDirection
'
;
import
{
growthBook
}
from
'
lib/growthbook/init
'
;
import
useLoadFeatures
from
'
lib/growthbook/useLoadFeatures
'
;
import
{
SocketProvider
}
from
'
lib/socket/context
'
;
import
theme
from
'
theme
'
;
import
AppErrorBoundary
from
'
ui/shared/AppError/AppErrorBoundary
'
;
...
...
@@ -42,9 +42,7 @@ const ERROR_SCREEN_STYLES: ChakraProps = {
function
MyApp
({
Component
,
pageProps
}:
AppPropsWithLayout
)
{
React
.
useEffect
(()
=>
{
growthBook
?.
loadFeatures
({
timeout
:
SECOND
});
},
[]);
useLoadFeatures
();
const
queryClient
=
useQueryClientConfig
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment