-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpremiumType.ts
64 lines (55 loc) · 1.9 KB
/
premiumType.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import {
collection,
getFirestore,
query,
where,
getDocs,
} from "firebase/firestore";
import { getAuth } from "firebase/auth";
import { FirebaseApp } from "firebase/app";
import { useEffect, useState } from "react";
export const premiumType = (app: FirebaseApp) => {
const auth = getAuth(app);
const db = getFirestore(app);
const userId = auth.currentUser?.uid;
const [isLoading, setIsLoading] = useState(true);
const [subscriptionData, setSubscriptionData] = useState({
isActive: false,
subscriptionName: "",
});
useEffect(() => {
const fetchData = async () => {
try {
if (!userId) {
setIsLoading(false);
return;
}
const subscriptionRef = collection(
db,
"customers",
userId,
"subscriptions"
);
const q = query(
subscriptionRef,
where("status", "in", ["trialing", "active"])
);
const querySnapshot = await getDocs(q);
if (!querySnapshot.empty) {
const subscriptionDataResponse = querySnapshot.docs[0].data();
const subscriptionName =
subscriptionDataResponse.items[0]?.price?.product?.name || "";
setSubscriptionData({ isActive: true, subscriptionName });
} else {
setSubscriptionData({ isActive: false, subscriptionName: "" });
}
setIsLoading(false);
} catch (error) {
console.error("Error fetching subscription data:", error);
setIsLoading(false);
}
};
fetchData();
}, [userId, db]);
return { ...subscriptionData, isLoading };
};