upd: realtime database
Deskripsi: - diskusi divisi No Issues
This commit is contained in:
@@ -14,6 +14,7 @@ import {
|
|||||||
} from "@/lib/api";
|
} from "@/lib/api";
|
||||||
import { useAuthSession } from "@/providers/AuthProvider";
|
import { useAuthSession } from "@/providers/AuthProvider";
|
||||||
import { Ionicons, MaterialIcons } from "@expo/vector-icons";
|
import { Ionicons, MaterialIcons } from "@expo/vector-icons";
|
||||||
|
import { firebase } from "@react-native-firebase/database";
|
||||||
import { router, Stack, useLocalSearchParams } from "expo-router";
|
import { router, Stack, useLocalSearchParams } from "expo-router";
|
||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import { Pressable, ScrollView, Text, View } from "react-native";
|
import { Pressable, ScrollView, Text, View } from "react-native";
|
||||||
@@ -55,6 +56,28 @@ export default function DiscussionDetail() {
|
|||||||
const [loading, setLoading] = useState(true)
|
const [loading, setLoading] = useState(true)
|
||||||
const [loadingKomentar, setLoadingKomentar] = useState(true)
|
const [loadingKomentar, setLoadingKomentar] = useState(true)
|
||||||
const arrSkeleton = Array.from({ length: 3 })
|
const arrSkeleton = Array.from({ length: 3 })
|
||||||
|
const reference = firebase.app().database('https://mobile-darmasaba-default-rtdb.asia-southeast1.firebasedatabase.app').ref(`/discussion-division/${detail}`);
|
||||||
|
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const onValueChange = reference.on('value', snapshot => {
|
||||||
|
if (snapshot.val() == null) {
|
||||||
|
reference.set({ trigger: true })
|
||||||
|
}
|
||||||
|
handleLoadComment(false)
|
||||||
|
});
|
||||||
|
|
||||||
|
// Stop listening for updates when no longer required
|
||||||
|
return () => reference.off('value', onValueChange);
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
function updateTrigger() {
|
||||||
|
reference.once('value', snapshot => {
|
||||||
|
const data = snapshot.val();
|
||||||
|
reference.update({ trigger: !data.trigger });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
async function handleLoad(loading: boolean) {
|
async function handleLoad(loading: boolean) {
|
||||||
try {
|
try {
|
||||||
@@ -131,8 +154,8 @@ export default function DiscussionDetail() {
|
|||||||
data: { comment: komentar, user: hasil },
|
data: { comment: komentar, user: hasil },
|
||||||
});
|
});
|
||||||
if (response.success) {
|
if (response.success) {
|
||||||
setKomentar("");
|
setKomentar("")
|
||||||
handleLoadComment(false);
|
updateTrigger()
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
|
|||||||
Reference in New Issue
Block a user