@c-rex/contexts 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/config-provider.tsx +14 -8
- package/src/search.tsx +12 -35
package/package.json
CHANGED
package/src/config-provider.tsx
CHANGED
|
@@ -19,7 +19,6 @@ type AppConfigContextType = {
|
|
|
19
19
|
setUiLang: (lang: string | null) => void
|
|
20
20
|
setContentLang: (lang: string | null) => void
|
|
21
21
|
setAvailableVersions: (versions: SidebarAvailableVersionsInterface[] | null) => void
|
|
22
|
-
setLoading: (loading: boolean) => void,
|
|
23
22
|
setPackageID: (id: string | null) => void
|
|
24
23
|
setArticleLang: (lang: string | null) => void
|
|
25
24
|
}
|
|
@@ -46,7 +45,7 @@ export const AppConfigProvider = ({ children }: { children: React.ReactNode }) =
|
|
|
46
45
|
? browserLang
|
|
47
46
|
: configs.languageSwitcher.default;
|
|
48
47
|
|
|
49
|
-
setCookie(UI_LANG_KEY, locale);
|
|
48
|
+
await setCookie(UI_LANG_KEY, locale);
|
|
50
49
|
}
|
|
51
50
|
setUiLang(locale)
|
|
52
51
|
}
|
|
@@ -61,7 +60,7 @@ export const AppConfigProvider = ({ children }: { children: React.ReactNode }) =
|
|
|
61
60
|
? browserLang
|
|
62
61
|
: configs.languageSwitcher.default;
|
|
63
62
|
|
|
64
|
-
setCookie(CONTENT_LANG_KEY, locale);
|
|
63
|
+
await setCookie(CONTENT_LANG_KEY, locale);
|
|
65
64
|
}
|
|
66
65
|
|
|
67
66
|
setContentLang(locale)
|
|
@@ -99,11 +98,19 @@ export const AppConfigProvider = ({ children }: { children: React.ReactNode }) =
|
|
|
99
98
|
|
|
100
99
|
await manageToken()
|
|
101
100
|
|
|
102
|
-
const configsResult = await
|
|
103
|
-
|
|
101
|
+
const [configsResult, langs] = await Promise.all([
|
|
102
|
+
getConfigs(),
|
|
103
|
+
call<LanguageAndCountries[]>("LanguageService.getLanguagesAndCountries")
|
|
104
|
+
])
|
|
104
105
|
|
|
105
|
-
|
|
106
|
-
|
|
106
|
+
if (!configsResult) {
|
|
107
|
+
throw new Error("Config cookie not available");
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
await Promise.all([
|
|
111
|
+
manageUILanguage(configsResult),
|
|
112
|
+
manageContentLanguage(configsResult, langs)
|
|
113
|
+
])
|
|
107
114
|
|
|
108
115
|
setAvailableLanguagesAndCountries(langs)
|
|
109
116
|
setConfigs(configsResult)
|
|
@@ -142,7 +149,6 @@ export const AppConfigProvider = ({ children }: { children: React.ReactNode }) =
|
|
|
142
149
|
setUiLang,
|
|
143
150
|
setContentLang,
|
|
144
151
|
setAvailableVersions,
|
|
145
|
-
setLoading,
|
|
146
152
|
setPackageID
|
|
147
153
|
}}
|
|
148
154
|
>
|
package/src/search.tsx
CHANGED
|
@@ -1,52 +1,29 @@
|
|
|
1
|
-
|
|
1
|
+
"use client"
|
|
2
|
+
|
|
3
|
+
import { createContext, useContext, ReactNode, useState, useEffect, use } from "react";
|
|
4
|
+
import { Loading } from "@c-rex/components/loading";
|
|
2
5
|
|
|
3
6
|
type SearchContextProps = {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
selectLanguage: (language: string) => void;
|
|
7
|
-
getSelectedLanguages: () => string[];
|
|
8
|
-
setLanguages: (languages: string[]) => void;
|
|
7
|
+
loading: boolean;
|
|
8
|
+
setLoading: (loading: boolean) => void;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
const SearchContext = createContext<SearchContextProps | undefined>(undefined);
|
|
12
12
|
|
|
13
13
|
export const SearchProvider = ({ children }: { children: ReactNode }) => {
|
|
14
|
-
const [
|
|
15
|
-
const [availableLanguages, setAvailableLanguages] = useState<string[]>([]);
|
|
16
|
-
|
|
17
|
-
const selectLanguage = (language: string) => {
|
|
18
|
-
if (selectedLanguage.includes(language)) {
|
|
19
|
-
setSelectedLanguage(selectedLanguage.filter(l => l !== language));
|
|
20
|
-
} else {
|
|
21
|
-
setSelectedLanguage([...selectedLanguage, language]);
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
const getSelectedLanguages = () => {
|
|
25
|
-
return selectedLanguage;
|
|
26
|
-
}
|
|
27
|
-
const setLanguages = (languages: string[]) => {
|
|
28
|
-
setAvailableLanguages(languages);
|
|
29
|
-
}
|
|
14
|
+
const [loading, setLoading] = useState<boolean>(true)
|
|
30
15
|
|
|
31
16
|
return (
|
|
32
|
-
<SearchContext.Provider value={{
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
getSelectedLanguages,
|
|
37
|
-
setLanguages
|
|
38
|
-
}}>
|
|
39
|
-
<>
|
|
40
|
-
{children}
|
|
41
|
-
</>
|
|
17
|
+
<SearchContext.Provider value={{ setLoading, loading }}>
|
|
18
|
+
{loading && <Loading opacity />}
|
|
19
|
+
|
|
20
|
+
{children}
|
|
42
21
|
</SearchContext.Provider>
|
|
43
22
|
);
|
|
44
23
|
};
|
|
45
24
|
|
|
46
25
|
export const useSearchContext = () => {
|
|
47
26
|
const context = useContext(SearchContext);
|
|
48
|
-
if (!context)
|
|
49
|
-
throw new Error("useSearchContext must be used within a SearchProvider");
|
|
50
|
-
}
|
|
27
|
+
if (!context) throw new Error("useSearchContext must be used within a SearchProvider");
|
|
51
28
|
return context;
|
|
52
29
|
};
|