From 768a416918bfc6c15038cdb036922b1baa97325b Mon Sep 17 00:00:00 2001 From: syn Date: Sun, 3 Nov 2024 13:00:57 +0700 Subject: [PATCH] add first Project Basic App --- .env | 7 +++ .gitignore | 0 README.md | 5 ++- package.json | 0 public/index.html | 0 src/App.vue | 63 ++++++++++++++++++++++++++ src/components/ChatBox.vue | 80 ++++++++++++++++++++++++++++++++++ src/components/Message.vue | 25 +++++++++++ src/firebase/auth.js | 14 ++++++ src/firebase/database.js | 35 +++++++++++++++ src/firebase/firebaseConfig.js | 14 ++++++ src/main.js | 0 src/router/index.js | 0 src/store/index.js | 0 src/views/ChatRoom.vue | 0 15 files changed, 242 insertions(+), 1 deletion(-) create mode 100644 .env create mode 100644 .gitignore create mode 100644 package.json create mode 100644 public/index.html create mode 100644 src/App.vue create mode 100644 src/components/ChatBox.vue create mode 100644 src/components/Message.vue create mode 100644 src/firebase/auth.js create mode 100644 src/firebase/database.js create mode 100644 src/firebase/firebaseConfig.js create mode 100644 src/main.js create mode 100644 src/router/index.js create mode 100644 src/store/index.js create mode 100644 src/views/ChatRoom.vue diff --git a/.env b/.env new file mode 100644 index 0000000..35a90bd --- /dev/null +++ b/.env @@ -0,0 +1,7 @@ +VUE_APP_FIREBASE_API_KEY=YOUR_API_KEY +VUE_APP_FIREBASE_AUTH_DOMAIN=YOUR_AUTH_DOMAIN +VUE_APP_FIREBASE_PROJECT_ID=YOUR_PROJECT_ID +VUE_APP_FIREBASE_STORAGE_BUCKET=YOUR_STORAGE_BUCKET +VUE_APP_FIREBASE_MESSAGING_SENDER_ID=YOUR_MESSAGING_SENDER_ID +VUE_APP_FIREBASE_APP_ID=YOUR_APP_ID +# Disini We Belum Uji Sama Sekali Nunggu nanti aja lah \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/README.md b/README.md index a9bccb0..e84d414 100755 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ # ChatsApp -ChatsApp The Project Real Time Chating \ No newline at end of file +ChatsApp The Project Real Time Chating + +Install: `npm install` +Run : `npm serve` diff --git a/package.json b/package.json new file mode 100644 index 0000000..e69de29 diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..e69de29 diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..ac1dd4e --- /dev/null +++ b/src/App.vue @@ -0,0 +1,63 @@ + + + + + + \ No newline at end of file diff --git a/src/components/ChatBox.vue b/src/components/ChatBox.vue new file mode 100644 index 0000000..e0ce47d --- /dev/null +++ b/src/components/ChatBox.vue @@ -0,0 +1,80 @@ + + + + + + + \ No newline at end of file diff --git a/src/components/Message.vue b/src/components/Message.vue new file mode 100644 index 0000000..f4a3141 --- /dev/null +++ b/src/components/Message.vue @@ -0,0 +1,25 @@ + + + + + + + \ No newline at end of file diff --git a/src/firebase/auth.js b/src/firebase/auth.js new file mode 100644 index 0000000..eed8835 --- /dev/null +++ b/src/firebase/auth.js @@ -0,0 +1,14 @@ +// src/firebase/auth.js +import { getAuth, signOut } from "firebase/auth"; +import app from "./firebaseConfig"; + +const auth = getAuth(app); + +export const signOutUser = async () => { + try { + await signOut(auth); + console.log("User logged out"); + } catch (error) { + console.error("Error during logout:", error); + } +}; diff --git a/src/firebase/database.js b/src/firebase/database.js new file mode 100644 index 0000000..29f512a --- /dev/null +++ b/src/firebase/database.js @@ -0,0 +1,35 @@ +// src/firebase/database.js +import { getFirestore, collection, addDoc, onSnapshot, query, orderBy } from "firebase/firestore"; +import app from "./firebaseConfig"; + +const db = getFirestore(app); +const messagesRef = collection(db, "messages"); + +// Fungsi untuk mengirim pesan +export const sendMessage = async (text) => { + try { + const user = JSON.parse(localStorage.getItem("user")); + if (!user) return; + + await addDoc(messagesRef, { + text, + sender: user.displayName, + uid: user.uid, + timestamp: new Date(), + }); + } catch (error) { + console.error("Error adding message: ", error); + } +}; + +// Mendengarkan pesan secara real-time +export const listenForMessages = (callback) => { + const q = query(messagesRef, orderBy("timestamp")); + onSnapshot(q, (snapshot) => { + const messages = snapshot.docs.map((doc) => ({ + id: doc.id, + ...doc.data(), + })); + callback(messages); + }); +}; diff --git a/src/firebase/firebaseConfig.js b/src/firebase/firebaseConfig.js new file mode 100644 index 0000000..6252473 --- /dev/null +++ b/src/firebase/firebaseConfig.js @@ -0,0 +1,14 @@ +// src/firebase/firebaseConfig.js +import { initializeApp } from "firebase/app"; + +const firebaseConfig = { + apiKey: process.env.VUE_APP_FIREBASE_API_KEY, + authDomain: process.env.VUE_APP_FIREBASE_AUTH_DOMAIN, + projectId: process.env.VUE_APP_FIREBASE_PROJECT_ID, + storageBucket: process.env.VUE_APP_FIREBASE_STORAGE_BUCKET, + messagingSenderId: process.env.VUE_APP_FIREBASE_MESSAGING_SENDER_ID, + appId: process.env.VUE_APP_FIREBASE_APP_ID, +}; + +const app = initializeApp(firebaseConfig); +export default app; diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..e69de29 diff --git a/src/router/index.js b/src/router/index.js new file mode 100644 index 0000000..e69de29 diff --git a/src/store/index.js b/src/store/index.js new file mode 100644 index 0000000..e69de29 diff --git a/src/views/ChatRoom.vue b/src/views/ChatRoom.vue new file mode 100644 index 0000000..e69de29