@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@c-rex/contexts",
3
- "version": "0.1.6",
3
+ "version": "0.1.7",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "src"
@@ -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 getConfigs()
103
- const langs = await call<LanguageAndCountries[]>("LanguageService.getLanguagesAndCountries")
101
+ const [configsResult, langs] = await Promise.all([
102
+ getConfigs(),
103
+ call<LanguageAndCountries[]>("LanguageService.getLanguagesAndCountries")
104
+ ])
104
105
 
105
- await manageUILanguage(configsResult)
106
- await manageContentLanguage(configsResult, langs)
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
- import { createContext, useContext, ReactNode, useState } from "react";
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
- selectedLanguage: string[];
5
- availableLanguages: string[];
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 [selectedLanguage, setSelectedLanguage] = useState<string[]>([]);
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
- selectedLanguage,
34
- availableLanguages,
35
- selectLanguage,
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
  };