fix: country composable not working due to nuxt routing. (#3623)
Closes: #2263
This commit is contained in:
parent
32920dd825
commit
8ee621295c
@ -1,6 +0,0 @@
|
||||
export const useUserCountry = () =>
|
||||
useState("userCountry", () => {
|
||||
const headers = useRequestHeaders(["cf-ipcountry"]);
|
||||
|
||||
return headers["cf-ipcountry"] ?? "US";
|
||||
});
|
||||
36
apps/frontend/src/composables/country.ts
Normal file
36
apps/frontend/src/composables/country.ts
Normal file
@ -0,0 +1,36 @@
|
||||
import { useState, useRequestHeaders } from "#imports";
|
||||
|
||||
export const useUserCountry = () => {
|
||||
const country = useState<string>("userCountry", () => "US");
|
||||
const fromServer = useState<boolean>("userCountryFromServer", () => false);
|
||||
|
||||
if (import.meta.server) {
|
||||
const headers = useRequestHeaders(["cf-ipcountry", "accept-language"]);
|
||||
const cf = headers["cf-ipcountry"];
|
||||
if (cf) {
|
||||
country.value = cf.toUpperCase();
|
||||
fromServer.value = true;
|
||||
} else {
|
||||
const al = headers["accept-language"] || "";
|
||||
const tag = al.split(",")[0];
|
||||
const val = tag.split("-")[1]?.toLowerCase();
|
||||
if (val) {
|
||||
country.value = val;
|
||||
fromServer.value = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.client) {
|
||||
onMounted(() => {
|
||||
if (fromServer.value) return;
|
||||
const lang = navigator.language || navigator.userLanguage || "";
|
||||
const region = lang.split("-")[1];
|
||||
if (region) {
|
||||
country.value = region.toUpperCase();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return country;
|
||||
};
|
||||
Loading…
x
Reference in New Issue
Block a user