Skip to content

Commit 20bd1e4

Browse files
Cellular hook.
1 parent ed1855e commit 20bd1e4

1 file changed

Lines changed: 77 additions & 0 deletions

File tree

hooks/useCellular.ts

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
import { useState, useEffect } from "react";
2+
import * as Cellular from "expo-cellular";
3+
import {
4+
allowsVoipAsync,
5+
getCarrierNameAsync,
6+
getCellularGenerationAsync,
7+
getIsoCountryCodeAsync,
8+
getMobileCountryCodeAsync,
9+
getMobileNetworkCodeAsync,
10+
getPermissionsAsync,
11+
requestPermissionsAsync,
12+
} from "@/utils/cellular";
13+
14+
export type CellularInfo = {
15+
allowsVoip: boolean | null;
16+
carrier: string | null;
17+
cellularGeneration: Cellular.CellularGeneration;
18+
isoCountryCode: string | null;
19+
mobileCountryCode: string | null;
20+
mobileNetworkCode: string | null;
21+
permission: any | null;
22+
};
23+
24+
export function useCeullar() {
25+
const [cellularInfo, setCellularInfo] = useState<CellularInfo>({
26+
allowsVoip: null,
27+
carrier: null,
28+
cellularGeneration: Cellular.CellularGeneration.UNKNOWN,
29+
isoCountryCode: null,
30+
mobileCountryCode: null,
31+
mobileNetworkCode: null,
32+
permission: null,
33+
});
34+
35+
const loadCellularInfo = async () => {
36+
try {
37+
const [
38+
allowsVoip,
39+
carrier,
40+
cellularGeneration,
41+
isoCountryCode,
42+
mobileCountryCode,
43+
mobileNetworkCode,
44+
permission,
45+
] = await Promise.all([
46+
allowsVoipAsync(),
47+
getCarrierNameAsync(),
48+
getCellularGenerationAsync(),
49+
getIsoCountryCodeAsync(),
50+
getMobileCountryCodeAsync(),
51+
getMobileNetworkCodeAsync(),
52+
getPermissionsAsync(),
53+
]);
54+
setCellularInfo({
55+
allowsVoip,
56+
carrier,
57+
cellularGeneration,
58+
isoCountryCode,
59+
mobileCountryCode,
60+
mobileNetworkCode,
61+
permission,
62+
});
63+
} catch (error) {
64+
console.error("Error loading cellular info:", error);
65+
}
66+
};
67+
68+
useEffect(() => {
69+
loadCellularInfo();
70+
}, []);
71+
72+
const refreshCellularInfo = () => {
73+
loadCellularInfo();
74+
};
75+
76+
return { cellularInfo, refreshCellularInfo, requestPermissionsAsync };
77+
}

0 commit comments

Comments
 (0)