From e6fe784bd2d210a5a1f12f26a037a41352c91984 Mon Sep 17 00:00:00 2001 From: jasperteo Date: Thu, 7 Dec 2023 21:58:39 +0800 Subject: [PATCH 01/34] comfortable completed --- bun.lockb | Bin 0 -> 172866 bytes index.html | 2 +- package.json | 16 ++++++++-------- src/App.css | 7 +++++++ src/App.jsx | 42 +++++++++++++++++++++++++++--------------- src/firebase.jsx | 15 ++++++++------- vite.config.js | 7 ++++--- 7 files changed, 55 insertions(+), 34 deletions(-) create mode 100755 bun.lockb diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..b1fea43f8941a5f1cf476f65fa92ad6fc4d9b189 GIT binary patch literal 172866 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

!r0aFOJN)y4RszohzRhF>mLu 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

  • U$1@Z%hfg(Urpg2$hC<&AX$^&Y^7pMsM0scTB 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 literal 0 HcmV?d00001 diff --git a/index.html b/index.html index 0c589ec..79c4701 100644 --- a/index.html +++ b/index.html @@ -1,4 +1,4 @@ - + diff --git a/package.json b/package.json index 74deac0..cfc7071 100644 --- a/package.json +++ b/package.json @@ -10,18 +10,18 @@ "preview": "vite preview" }, "dependencies": { - "firebase": "^10.5.2", + "firebase": "^10.7.1", "react": "^18.2.0", "react-dom": "^18.2.0" }, "devDependencies": { - "@types/react": "^18.2.15", - "@types/react-dom": "^18.2.7", - "@vitejs/plugin-react": "^4.0.3", - "eslint": "^8.45.0", - "eslint-plugin-react": "^7.32.2", + "@types/react": "^18.2.42", + "@types/react-dom": "^18.2.17", + "@vitejs/plugin-react": "^4.2.1", + "eslint": "^8.55.0", + "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.3", - "vite": "^4.4.5" + "eslint-plugin-react-refresh": "^0.4.5", + "vite": "^5.0.6" } } diff --git a/src/App.css b/src/App.css index 996d6e1..0af5394 100644 --- a/src/App.css +++ b/src/App.css @@ -36,3 +36,10 @@ .card { padding: 2em; } + +ol { + text-align: left; + li { + padding: 0.5em; + } +} diff --git a/src/App.jsx b/src/App.jsx index 372b77f..30b3799 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,37 +1,45 @@ import logo from "/logo.png"; import "./App.css"; -import { onChildAdded, push, ref, set } from "firebase/database"; +import { onChildAdded, push, ref, set, onValue } from "firebase/database"; import { database } from "./firebase"; import { useState, useEffect } from "react"; // Save the Firebase message folder name as a constant to avoid bugs due to misspelling const DB_MESSAGES_KEY = "messages"; -function App() { +export default function App() { const [messages, setMessages] = useState([]); + const [inputMessage, setInputMessage] = useState(""); + + const messagesRef = ref(database, DB_MESSAGES_KEY); useEffect(() => { - const messagesRef = ref(database, DB_MESSAGES_KEY); // onChildAdded will return data for every child at the reference and every subsequent new child onChildAdded(messagesRef, (data) => { // Add the subsequent child to local component state, initialising a new array to trigger re-render - setMessages((prevState) => + setMessages((prev) => // Store message key so we can use it as a key in our list items when rendering messages - [...prevState, { key: data.key, val: data.val() }] + [...prev, { key: data.key, val: data.val() }] ); }); - }, []); + }, []); // eslint-disable-line const writeData = () => { - const messageListRef = ref(database, DB_MESSAGES_KEY); - const newMessageRef = push(messageListRef); - set(newMessageRef, "abc"); + const newMessageRef = push(messagesRef); + set(newMessageRef, { Timestamp: `${Date()}`, Message: inputMessage }); }; // Convert messages in state to message JSX elements to render - let messageListItems = messages.map((message) => ( -
  • {message.val}
  • - )); + let messageListItems = messages.map((message) => { + return ( +
  • + {new Date(message.val.Timestamp).toLocaleString()} +
    + Message: {message.val.Message} +
    +
  • + ); + }); return ( <> @@ -41,11 +49,15 @@ function App() {

    Instagram Bootcamp

    {/* TODO: Add input field and add text input as messages in Firebase */} - +
    (e.preventDefault(), e.target.reset())}> + setInputMessage(e.target.value)} + />{" "} + +
      {messageListItems}
    ); } - -export default App; diff --git a/src/firebase.jsx b/src/firebase.jsx index 6855616..d950c9c 100644 --- a/src/firebase.jsx +++ b/src/firebase.jsx @@ -4,14 +4,15 @@ import { getDatabase } from "firebase/database"; // TODO: Replace with your app's Firebase project configuration const firebaseConfig = { - apiKey: "API_KEY", - authDomain: "PROJECT_ID.firebaseapp.com", + apiKey: import.meta.env.VITE_API_KEY, + authDomain: import.meta.env.VITE_AUTH_DOMAIN, // The value of `databaseURL` depends on the location of the database - databaseURL: "https://DATABASE_NAME.REGION.firebasedatabase.app", - projectId: "PROJECT_ID", - storageBucket: "PROJECT_ID.appspot.com", - messagingSenderId: "SENDER_ID", - appId: "APP_ID", + databaseURL: + "https://rocketgram-b65c3-default-rtdb.asia-southeast1.firebasedatabase.app/", + projectId: import.meta.env.VITE_PROJECT_ID, + storageBucket: import.meta.env.VITE_STORAGE_BUCKET, + messagingSenderId: import.meta.env.VITE_MESSAGING_SENDER_ID, + appId: import.meta.env.VITE_APP_ID, }; // Initialize Firebase diff --git a/vite.config.js b/vite.config.js index 5a33944..f54c1f0 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,7 +1,8 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; // https://vitejs.dev/config/ export default defineConfig({ plugins: [react()], -}) + base: "/instagram-3.2/", +}); From 32c7425209520b10bf988d13368dd4467260a1dc Mon Sep 17 00:00:00 2001 From: jasperteo Date: Thu, 7 Dec 2023 23:37:33 +0800 Subject: [PATCH 02/34] touched up css --- index.html | 2 ++ public/JetBrainsMono-Light.woff2 | Bin 0 -> 93856 bytes src/App.css | 25 +++++++++++++++++++++++-- src/App.jsx | 11 ++++++----- src/index.css | 7 ++++++- 5 files changed, 37 insertions(+), 8 deletions(-) create mode 100644 public/JetBrainsMono-Light.woff2 diff --git a/index.html b/index.html index 79c4701..42c6d75 100644 --- a/index.html +++ b/index.html @@ -5,6 +5,8 @@ Vite + React + +
    diff --git a/public/JetBrainsMono-Light.woff2 b/public/JetBrainsMono-Light.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..65384987368389e57b7d1fef5ebbed55fc6fdd17 GIT binary patch literal 93856 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

    da86Jexg>>4 zxFnY_m!KpdpK_4fDRT)aJFHnT-4=;e)Nor+8CHQpyZF;k+Ka7VG?jVV3U=C>?dOS)7FU?wf*8%e8Yd zC#}jyqkd$MH$>(NzRPhO&s*x%8uNy5UJtDE0q%29%T45DPU1}#e@UPce>S#P_frPg zdJ%}u3dMDTle0XWlfg-dyGHL6gJy{W4U6<=0fif)gLQ78+xG!Uz0qX8Bv4D=jfcIr z<2q5nnQfKWwR1lTMyiN~mwuJRRbGHWTTo&$YsZO@+?Y1180u%&UihuxY zn?)Sd39r2&7!k+C;VDv2tfnC{fRoC&Wz0!RKWYgyjcd@FaSf*RGPOa@Ml7g(SZw)N z>`4eI>lQbXdH^DWLu&=B_Iw1BuzEx+Bg<1*4!NjRW1m^kPQ>9}p|cf?`ioOKT2$GDnkma@>%zuP#4kMI#33B*af3Gv7%A0o-K%0D_6 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 literal 0 HcmV?d00001 diff --git a/src/App.css b/src/App.css index 0af5394..b2eb491 100644 --- a/src/App.css +++ b/src/App.css @@ -35,11 +35,32 @@ .card { padding: 2em; + form * { + margin: 1em; + } } -ol { +.message-box { text-align: left; + display: flex; + flex-direction: column-reverse; li { - padding: 0.5em; + padding: 0.5em 0em 0.5em 0em; + * { + margin: 0.25em; + } } } + +.text-messages { + font-size: 1.2em; + font-weight: 420; +} + +.timestamp { + font-family: "JetBrains Mono", monospace; + font-weight: 300; + font-size: 0.8125em; + letter-spacing: 0.075em; + font-feature-settings: "cv18", "zero"; +} diff --git a/src/App.jsx b/src/App.jsx index 30b3799..6b0a1f6 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -30,13 +30,14 @@ export default function App() { }; // Convert messages in state to message JSX elements to render - let messageListItems = messages.map((message) => { + const messageListItems = messages.map((message) => { return (

  • - {new Date(message.val.Timestamp).toLocaleString()} -
    - Message: {message.val.Message} + + {new Date(message.val.Timestamp).toLocaleString()} +
    + {message.val.Message}
  • ); }); @@ -56,7 +57,7 @@ export default function App() { />{" "} -
      {messageListItems}
    +
      {messageListItems}
    ); diff --git a/src/index.css b/src/index.css index 2c3fac6..758bc69 100644 --- a/src/index.css +++ b/src/index.css @@ -1,5 +1,5 @@ :root { - font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + font-family: InterVariable, system-ui, Avenir, Helvetica, Arial, sans-serif; line-height: 1.5; font-weight: 400; @@ -67,3 +67,8 @@ button:focus-visible { background-color: #f9f9f9; } } + +@font-face { + font-family: "Jetbrains Mono"; + src: url(/JetBrainsMono-Light.woff2); +} From 06feb68ab7f2d61852988dee9acd9074550ffeb4 Mon Sep 17 00:00:00 2001 From: jasperteo Date: Thu, 7 Dec 2023 23:53:55 +0800 Subject: [PATCH 03/34] siwtched timestamp and message aroud --- src/App.css | 4 ++-- src/App.jsx | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/App.css b/src/App.css index b2eb491..16c3e96 100644 --- a/src/App.css +++ b/src/App.css @@ -53,14 +53,14 @@ } .text-messages { - font-size: 1.2em; + font-size: 1.25em; font-weight: 420; } .timestamp { font-family: "JetBrains Mono", monospace; font-weight: 300; - font-size: 0.8125em; + font-size: 0.75em; letter-spacing: 0.075em; font-feature-settings: "cv18", "zero"; } diff --git a/src/App.jsx b/src/App.jsx index 6b0a1f6..639eea7 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,6 +1,6 @@ import logo from "/logo.png"; import "./App.css"; -import { onChildAdded, push, ref, set, onValue } from "firebase/database"; +import { onChildAdded, push, ref, set } from "firebase/database"; import { database } from "./firebase"; import { useState, useEffect } from "react"; @@ -33,11 +33,11 @@ export default function App() { const messageListItems = messages.map((message) => { return (
  • + {message.val.Message} +
    {new Date(message.val.Timestamp).toLocaleString()} -
    - {message.val.Message}
  • ); }); From ffdd2b98e9f5cd6950829850eb51896d31260bcb Mon Sep 17 00:00:00 2001 From: jasperteo Date: Fri, 8 Dec 2023 01:29:16 +0800 Subject: [PATCH 04/34] added delete all --- src/App.jsx | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index 639eea7..6f3c608 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,6 +1,13 @@ import logo from "/logo.png"; import "./App.css"; -import { onChildAdded, push, ref, set } from "firebase/database"; +import { + onChildAdded, + push, + ref, + set, + remove, + onChildRemoved, +} from "firebase/database"; import { database } from "./firebase"; import { useState, useEffect } from "react"; @@ -22,6 +29,9 @@ export default function App() { [...prev, { key: data.key, val: data.val() }] ); }); + onChildRemoved(messagesRef, () => + setMessages((prev) => prev.toSpliced(-1, 1)) + ); }, []); // eslint-disable-line const writeData = () => { @@ -29,6 +39,8 @@ export default function App() { set(newMessageRef, { Timestamp: `${Date()}`, Message: inputMessage }); }; + const deleteData = () => remove(messagesRef); + // Convert messages in state to message JSX elements to render const messageListItems = messages.map((message) => { return ( @@ -56,6 +68,7 @@ export default function App() { onChange={(e) => setInputMessage(e.target.value)} />{" "} +
      {messageListItems}
    From e0eb44f727c2b4b6e0dde0bffb2158dd45dce56f Mon Sep 17 00:00:00 2001 From: jasperteo Date: Fri, 8 Dec 2023 15:26:27 +0800 Subject: [PATCH 05/34] added delete for individual message --- src/App.css | 2 +- src/App.jsx | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/App.css b/src/App.css index 16c3e96..dddd4bd 100644 --- a/src/App.css +++ b/src/App.css @@ -36,7 +36,7 @@ .card { padding: 2em; form * { - margin: 1em; + margin: 0em 0.5em 0em 0em; } } diff --git a/src/App.jsx b/src/App.jsx index 6f3c608..f8c1618 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -29,17 +29,17 @@ export default function App() { [...prev, { key: data.key, val: data.val() }] ); }); - onChildRemoved(messagesRef, () => - setMessages((prev) => prev.toSpliced(-1, 1)) + onChildRemoved(messagesRef, (data) => + setMessages((prev) => prev.filter((item) => item.key !== data.key)) ); }, []); // eslint-disable-line const writeData = () => { const newMessageRef = push(messagesRef); - set(newMessageRef, { Timestamp: `${Date()}`, Message: inputMessage }); + set(newMessageRef, { Timestamp: `${new Date()}`, Message: inputMessage }); }; - const deleteData = () => remove(messagesRef); + const deleteAll = () => remove(messagesRef); // Convert messages in state to message JSX elements to render const messageListItems = messages.map((message) => { @@ -50,6 +50,12 @@ export default function App() { {new Date(message.val.Timestamp).toLocaleString()} + ); }); @@ -68,7 +74,7 @@ export default function App() { onChange={(e) => setInputMessage(e.target.value)} />{" "} - +
      {messageListItems}
    From 3e0c123bf61f532140ef9eef9c4190aee813c8af Mon Sep 17 00:00:00 2001 From: jasperteo Date: Sat, 9 Dec 2023 17:39:25 +0800 Subject: [PATCH 06/34] added edit --- src/App.css | 13 ++++++++- src/App.jsx | 84 +++++++++++++++++++++++++++++++++++++---------------- 2 files changed, 71 insertions(+), 26 deletions(-) diff --git a/src/App.css b/src/App.css index dddd4bd..975851e 100644 --- a/src/App.css +++ b/src/App.css @@ -55,12 +55,23 @@ .text-messages { font-size: 1.25em; font-weight: 420; + width: 18em; } -.timestamp { +.info { font-family: "JetBrains Mono", monospace; font-weight: 300; font-size: 0.75em; letter-spacing: 0.075em; font-feature-settings: "cv18", "zero"; } + +.edit-delete { + font-family: InterVariable; + display: inline-block; +} + +#timestamp { + margin-right: 4em; + display: inline-block; +} diff --git a/src/App.jsx b/src/App.jsx index f8c1618..f7d60f7 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -6,7 +6,9 @@ import { ref, set, remove, + update, onChildRemoved, + onChildChanged, } from "firebase/database"; import { database } from "./firebase"; import { useState, useEffect } from "react"; @@ -16,46 +18,81 @@ const DB_MESSAGES_KEY = "messages"; export default function App() { const [messages, setMessages] = useState([]); - const [inputMessage, setInputMessage] = useState(""); + const [inputValue, setInputValue] = useState(""); const messagesRef = ref(database, DB_MESSAGES_KEY); useEffect(() => { // onChildAdded will return data for every child at the reference and every subsequent new child - onChildAdded(messagesRef, (data) => { + onChildAdded(messagesRef, (data) => // Add the subsequent child to local component state, initialising a new array to trigger re-render setMessages((prev) => // Store message key so we can use it as a key in our list items when rendering messages [...prev, { key: data.key, val: data.val() }] - ); - }); + ) + ); onChildRemoved(messagesRef, (data) => setMessages((prev) => prev.filter((item) => item.key !== data.key)) ); + // onChildChanged(messagesRef, (data) => + // setMessages((prev) => { + // const updated = [...prev]; + // updated[updated.findIndex((item) => item.key === data.key)] = { + // key: data.key, + // val: data.val(), + // }; + // return updated; + // }) + // ); + onChildChanged(messagesRef, (data) => + setMessages((prev) => + prev.map((item) => + item.key === data.key ? { key: data.key, val: data.val() } : item + ) + ) + ); }, []); // eslint-disable-line - const writeData = () => { - const newMessageRef = push(messagesRef); - set(newMessageRef, { Timestamp: `${new Date()}`, Message: inputMessage }); - }; + const writeData = () => + set(push(messagesRef), { + timestamp: `${new Date()}`, + edited: ``, + message: inputValue, + }); const deleteAll = () => remove(messagesRef); + const editData = (message) => + update(ref(database, DB_MESSAGES_KEY + "/" + message.key), { + edited: `${new Date()}`, + message: inputValue, + }); + + const deleteData = (message) => + remove(ref(database, DB_MESSAGES_KEY + "/" + message.key)); + // Convert messages in state to message JSX elements to render const messageListItems = messages.map((message) => { return (
  • - {message.val.Message} -
    - - {new Date(message.val.Timestamp).toLocaleString()} - - +
    {message.val.message}
    +
    +
    + Sent: + {new Date(message.val.timestamp).toLocaleString()} + {message?.val?.edited && ( + <> +
    + Edited: + {new Date(message.val.edited).toLocaleString()} + + )} +
    +
    + + +
    +
  • ); }); @@ -69,12 +106,9 @@ export default function App() {
    {/* TODO: Add input field and add text input as messages in Firebase */}
    (e.preventDefault(), e.target.reset())}> - setInputMessage(e.target.value)} - />{" "} - - + setInputValue(e.target.value)} />{" "} + +
      {messageListItems}
    From a26fe48e07177c09eea2d19e97e5a1a015e43c26 Mon Sep 17 00:00:00 2001 From: jasperteo Date: Sat, 9 Dec 2023 21:06:18 +0800 Subject: [PATCH 07/34] more comfortable done --- src/App.css | 26 ++++++++--------- src/App.jsx | 81 +++++++++++++++++++++++++++-------------------------- 2 files changed, 54 insertions(+), 53 deletions(-) diff --git a/src/App.css b/src/App.css index 975851e..428b4e3 100644 --- a/src/App.css +++ b/src/App.css @@ -47,31 +47,31 @@ li { padding: 0.5em 0em 0.5em 0em; * { - margin: 0.25em; + margin: 0.2em; } } } +input { + font-size: 1.25em; +} + .text-messages { font-size: 1.25em; font-weight: 420; - width: 18em; + width: 15em; + display: inline-flex; +} + +.edit-delete { + font-size: 0.8125em; + display: inline-flex; } .info { font-family: "JetBrains Mono", monospace; font-weight: 300; - font-size: 0.75em; + font-size: 0.5625em; letter-spacing: 0.075em; font-feature-settings: "cv18", "zero"; } - -.edit-delete { - font-family: InterVariable; - display: inline-block; -} - -#timestamp { - margin-right: 4em; - display: inline-block; -} diff --git a/src/App.jsx b/src/App.jsx index f7d60f7..80afc07 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -19,31 +19,18 @@ const DB_MESSAGES_KEY = "messages"; export default function App() { const [messages, setMessages] = useState([]); const [inputValue, setInputValue] = useState(""); + const [isEditing, setIsEditing] = useState([]); + const [editValue, setEditValue] = useState(""); const messagesRef = ref(database, DB_MESSAGES_KEY); useEffect(() => { - // onChildAdded will return data for every child at the reference and every subsequent new child onChildAdded(messagesRef, (data) => - // Add the subsequent child to local component state, initialising a new array to trigger re-render - setMessages((prev) => - // Store message key so we can use it as a key in our list items when rendering messages - [...prev, { key: data.key, val: data.val() }] - ) + setMessages((prev) => [...prev, { key: data.key, val: data.val() }]) ); onChildRemoved(messagesRef, (data) => setMessages((prev) => prev.filter((item) => item.key !== data.key)) ); - // onChildChanged(messagesRef, (data) => - // setMessages((prev) => { - // const updated = [...prev]; - // updated[updated.findIndex((item) => item.key === data.key)] = { - // key: data.key, - // val: data.val(), - // }; - // return updated; - // }) - // ); onChildChanged(messagesRef, (data) => setMessages((prev) => prev.map((item) => @@ -53,6 +40,10 @@ export default function App() { ); }, []); // eslint-disable-line + useEffect(() => { + setIsEditing(messages.map(() => false)); + }, [messages]); + const writeData = () => set(push(messagesRef), { timestamp: `${new Date()}`, @@ -62,36 +53,46 @@ export default function App() { const deleteAll = () => remove(messagesRef); - const editData = (message) => - update(ref(database, DB_MESSAGES_KEY + "/" + message.key), { - edited: `${new Date()}`, - message: inputValue, - }); + const editData = (data, i) => { + setIsEditing((prev) => prev.map((item, j) => (i === j ? !item : item))); + if (isEditing[i]) { + update(ref(database, DB_MESSAGES_KEY + "/" + data.key), { + edited: `${new Date()}`, + message: editValue, + }); + } + }; - const deleteData = (message) => - remove(ref(database, DB_MESSAGES_KEY + "/" + message.key)); + const deleteData = (data) => + remove(ref(database, DB_MESSAGES_KEY + "/" + data.key)); // Convert messages in state to message JSX elements to render - const messageListItems = messages.map((message) => { + const messageListItems = messages.map((message, index) => { return (
  • -
    {message.val.message}
    + {isEditing[index] ? ( + setEditValue(e.target.value)} + /> + ) : ( +
    {message.val.message}
    + )} +
    + + +
    -
    - Sent: - {new Date(message.val.timestamp).toLocaleString()} - {message?.val?.edited && ( - <> -
    - Edited: - {new Date(message.val.edited).toLocaleString()} - - )} -
    -
    - - -
    + Sent: + {new Date(message.val.timestamp).toLocaleString()} + {message?.val?.edited && ( + <> +
    + Edited: + {new Date(message.val.edited).toLocaleString()} + + )}
  • ); From a24de48ae351832b4cb2b4d6c4ee4a1b9ad871ad Mon Sep 17 00:00:00 2001 From: jasperteo Date: Sun, 10 Dec 2023 22:43:48 +0800 Subject: [PATCH 08/34] fixed editing bug --- src/App.jsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 80afc07..e135f89 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -54,12 +54,14 @@ export default function App() { const deleteAll = () => remove(messagesRef); const editData = (data, i) => { - setIsEditing((prev) => prev.map((item, j) => (i === j ? !item : item))); + setEditValue(data?.val?.message); + setIsEditing((prev) => prev.map((bool, j) => (i === j ? !bool : bool))); if (isEditing[i]) { update(ref(database, DB_MESSAGES_KEY + "/" + data.key), { edited: `${new Date()}`, message: editValue, }); + setEditValue(""); } }; @@ -73,7 +75,7 @@ export default function App() { {isEditing[index] ? ( setEditValue(e.target.value)} /> ) : ( From c58fb162fd863e465dca34af33371ac17aa09afd Mon Sep 17 00:00:00 2001 From: Jasper Date: Mon, 11 Dec 2023 10:18:34 +0800 Subject: [PATCH 09/34] Create static.yml --- .github/workflows/static.yml | 58 ++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 .github/workflows/static.yml diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml new file mode 100644 index 0000000..be11c69 --- /dev/null +++ b/.github/workflows/static.yml @@ -0,0 +1,58 @@ +# Simple workflow for deploying static content to GitHub Pages +name: Deploy static content to Pages + +on: + # Runs on pushes targeting the default branch + push: + branches: ["main"] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + # Single deploy job since we're just deploying + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Bun environment + uses: oven-sh/setup-bun@v1 + with: + bun-version: latest + - name: Install dependencies + run: bun install + - name: Build + run: bunx vite build + env: + VITE_API_KEY: ${{ secrets.VITE_API_KEY }} + VITE_AUTH_DOMAIN: ${{ secrets.VITE_AUTH_DOMAIN }} + VITE_PROJECT_ID: ${{ secrets.VITE_PROJECT_ID }} + VITE_STORAGE_BUCKET: ${{ secrets.VITE_STORAGE_BUCKET }} + VITE_MESSAGING_SENDER_ID: ${{ secrets.VITE_MESSAGING_SENDER_ID }} + VITE_APP_ID: 1:${{ secrets.VITE_APP_ID }} + - name: Setup Pages + uses: actions/configure-pages@v3 + - name: Upload artifact + uses: actions/upload-pages-artifact@v2 + with: + # Upload entire repository + path: "./dist" + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v2 From 1427c80e96dd08498e9695d010d4ee2d30130a56 Mon Sep 17 00:00:00 2001 From: jasperteo Date: Wed, 13 Dec 2023 06:55:25 +0800 Subject: [PATCH 10/34] added uploading of images --- index.html | 2 +- src/App.jsx | 59 +++++++++++++++++++++++++++++++++++++----------- src/firebase.jsx | 11 ++++++--- 3 files changed, 55 insertions(+), 17 deletions(-) diff --git a/index.html b/index.html index 42c6d75..209d6d7 100644 --- a/index.html +++ b/index.html @@ -2,8 +2,8 @@ - + Vite + React diff --git a/src/App.jsx b/src/App.jsx index e135f89..7265d03 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -2,27 +2,38 @@ import logo from "/logo.png"; import "./App.css"; import { onChildAdded, + onChildChanged, + onChildRemoved, push, - ref, + ref as databaseRef, set, remove, update, - onChildRemoved, - onChildChanged, } from "firebase/database"; -import { database } from "./firebase"; +import { + getDownloadURL, + ref as storageRef, + uploadBytes, +} from "firebase/storage"; +import { database, storage, auth } from "./firebase"; import { useState, useEffect } from "react"; // Save the Firebase message folder name as a constant to avoid bugs due to misspelling const DB_MESSAGES_KEY = "messages"; +const DB_IMAGES_KEY = "images"; export default function App() { + //capture message const [messages, setMessages] = useState([]); const [inputValue, setInputValue] = useState(""); + //capture edit const [isEditing, setIsEditing] = useState([]); const [editValue, setEditValue] = useState(""); + //capture file + const [file, setFile] = useState(null); - const messagesRef = ref(database, DB_MESSAGES_KEY); + const messagesRef = databaseRef(database, DB_MESSAGES_KEY); + const imgRef = storageRef(storage, DB_IMAGES_KEY); useEffect(() => { onChildAdded(messagesRef, (data) => @@ -41,15 +52,26 @@ export default function App() { }, []); // eslint-disable-line useEffect(() => { - setIsEditing(messages.map(() => false)); + setIsEditing(messages.map(() => false)); //amount of "false" in array to be same as messages.length }, [messages]); - const writeData = () => + const writeData = async () => { + let url = ""; + if (file) { + const newStorageRef = storageRef( + storage, + DB_IMAGES_KEY + "/" + file.name + ); + await uploadBytes(newStorageRef, file); + url = await getDownloadURL(newStorageRef); + } set(push(messagesRef), { timestamp: `${new Date()}`, - edited: ``, + edited: "", message: inputValue, + URL: url, }); + }; const deleteAll = () => remove(messagesRef); @@ -57,7 +79,7 @@ export default function App() { setEditValue(data?.val?.message); setIsEditing((prev) => prev.map((bool, j) => (i === j ? !bool : bool))); if (isEditing[i]) { - update(ref(database, DB_MESSAGES_KEY + "/" + data.key), { + update(databaseRef(database, DB_MESSAGES_KEY + "/" + data.key), { edited: `${new Date()}`, message: editValue, }); @@ -66,7 +88,7 @@ export default function App() { }; const deleteData = (data) => - remove(ref(database, DB_MESSAGES_KEY + "/" + data.key)); + remove(databaseRef(database, DB_MESSAGES_KEY + "/" + data.key)); // Convert messages in state to message JSX elements to render const messageListItems = messages.map((message, index) => { @@ -85,6 +107,11 @@ export default function App() { +
    + {message?.val?.URL && ( + image + )} +
    Sent: {new Date(message.val.timestamp).toLocaleString()} @@ -109,9 +136,15 @@ export default function App() {
    {/* TODO: Add input field and add text input as messages in Firebase */}
    (e.preventDefault(), e.target.reset())}> - setInputValue(e.target.value)} />{" "} - - + setInputValue(e.target.value)} /> + + +
    + setFile(e.target.files[0])} />
      {messageListItems}
    diff --git a/src/firebase.jsx b/src/firebase.jsx index d950c9c..c8cb921 100644 --- a/src/firebase.jsx +++ b/src/firebase.jsx @@ -1,14 +1,15 @@ // Import the functions you need from the SDKs you need import { initializeApp } from "firebase/app"; import { getDatabase } from "firebase/database"; +import { getStorage } from "firebase/storage"; +import { getAuth } from "firebase/auth"; // TODO: Replace with your app's Firebase project configuration const firebaseConfig = { apiKey: import.meta.env.VITE_API_KEY, authDomain: import.meta.env.VITE_AUTH_DOMAIN, // The value of `databaseURL` depends on the location of the database - databaseURL: - "https://rocketgram-b65c3-default-rtdb.asia-southeast1.firebasedatabase.app/", + databaseURL: import.meta.env.VITE_DATABASE_URL, projectId: import.meta.env.VITE_PROJECT_ID, storageBucket: import.meta.env.VITE_STORAGE_BUCKET, messagingSenderId: import.meta.env.VITE_MESSAGING_SENDER_ID, @@ -19,4 +20,8 @@ const firebaseConfig = { const firebaseApp = initializeApp(firebaseConfig); // Get a reference to the database service and export the reference for other modules -export const database = getDatabase(firebaseApp); +const database = getDatabase(firebaseApp); +const storage = getStorage(firebaseApp); +const auth = getAuth(firebaseApp); + +export { database, storage, auth }; From 89ff66ee1af9a0e421b3db2df887da3bf55c0b15 Mon Sep 17 00:00:00 2001 From: jasperteo Date: Fri, 15 Dec 2023 20:32:14 +0800 Subject: [PATCH 11/34] added likes --- src/App.css | 1 + src/App.jsx | 113 ++++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 102 insertions(+), 12 deletions(-) diff --git a/src/App.css b/src/App.css index 428b4e3..617cf92 100644 --- a/src/App.css +++ b/src/App.css @@ -61,6 +61,7 @@ input { font-weight: 420; width: 15em; display: inline-flex; + text-wrap: balance; } .edit-delete { diff --git a/src/App.jsx b/src/App.jsx index 7265d03..016fb20 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -32,8 +32,9 @@ export default function App() { //capture file const [file, setFile] = useState(null); + const [liked, setLiked] = useState([]); + const messagesRef = databaseRef(database, DB_MESSAGES_KEY); - const imgRef = storageRef(storage, DB_IMAGES_KEY); useEffect(() => { onChildAdded(messagesRef, (data) => @@ -53,7 +54,8 @@ export default function App() { useEffect(() => { setIsEditing(messages.map(() => false)); //amount of "false" in array to be same as messages.length - }, [messages]); + setLiked(messages.map(() => false)); + }, [messages.length]); const writeData = async () => { let url = ""; @@ -69,16 +71,19 @@ export default function App() { timestamp: `${new Date()}`, edited: "", message: inputValue, - URL: url, + url: url, + likeCount: 0, }); + setInputValue(""); + setFile(null); }; const deleteAll = () => remove(messagesRef); - const editData = (data, i) => { + const editData = (data, index) => { setEditValue(data?.val?.message); - setIsEditing((prev) => prev.map((bool, j) => (i === j ? !bool : bool))); - if (isEditing[i]) { + setIsEditing((prev) => prev.toSpliced(index, 1, !prev[index])); + if (isEditing[index]) { update(databaseRef(database, DB_MESSAGES_KEY + "/" + data.key), { edited: `${new Date()}`, message: editValue, @@ -96,6 +101,7 @@ export default function App() {
  • {isEditing[index] ? ( setEditValue(e.target.value)} @@ -103,19 +109,97 @@ export default function App() { ) : (
    {message.val.message}
    )} + + {liked[index] ? ( + + ) : ( + + )} +
    - {message?.val?.URL && ( - image + {!!message?.val?.url && ( + image )}
    Sent: {new Date(message.val.timestamp).toLocaleString()} - {message?.val?.edited && ( + {!!message?.val?.edited && ( <>
    Edited: @@ -132,11 +216,16 @@ export default function App() {
    Rocket logo
    -

    Instagram Bootcamp

    +

    Rocketgram

    {/* TODO: Add input field and add text input as messages in Firebase */} -
    (e.preventDefault(), e.target.reset())}> - setInputValue(e.target.value)} /> + e.preventDefault()}> + setInputValue(e.target.value)} + /> From 1d4ff8b1929275f37d1c285e8791946d2b403ec3 Mon Sep 17 00:00:00 2001 From: jasperteo Date: Sat, 16 Dec 2023 01:58:35 +0800 Subject: [PATCH 12/34] changed font, fixed like icon --- index.html | 2 -- public/SourceSans3VF-Upright.ttf.woff2 | Bin 0 -> 170188 bytes src/App.jsx | 14 ++++++++------ src/index.css | 6 +++++- 4 files changed, 13 insertions(+), 9 deletions(-) create mode 100644 public/SourceSans3VF-Upright.ttf.woff2 diff --git a/index.html b/index.html index 209d6d7..e216272 100644 --- a/index.html +++ b/index.html @@ -5,8 +5,6 @@ Vite + React - -
    diff --git a/public/SourceSans3VF-Upright.ttf.woff2 b/public/SourceSans3VF-Upright.ttf.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..96cc9fd06ceb275ec3d6103ad97c5647212c88c5 GIT binary patch literal 170188 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

    -^;{yi1sYQA$!RN;OaI32vowoeW_wIH15#OiCk@ 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 ol+rdQ$5Muv+J2bk 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

    &|CZ^FkN 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 r{xLrNJ^cMs { setLiked((prev) => prev.toSpliced(index, 1, !prev[index])); - // update( - // databaseRef(database, DB_MESSAGES_KEY + "/" + message.key), - // { - // likeCount: message.val.likeCount - 1, - // } - // ); + update( + databaseRef(database, DB_MESSAGES_KEY + "/" + message.key), + { + likeCount: message.val.likeCount - 1, + } + ); }}> {message.val.likeCount} Date: Sat, 16 Dec 2023 02:29:50 +0800 Subject: [PATCH 13/34] disabled all other edit buttons while editing, replaced LIKE icon from SVG to html webcomponent --- index.html | 1 + src/App.css | 5 ++++ src/App.jsx | 63 ++++++++++++--------------------------------------- src/index.css | 6 ++++- 4 files changed, 26 insertions(+), 49 deletions(-) diff --git a/index.html b/index.html index e216272..ac36089 100644 --- a/index.html +++ b/index.html @@ -5,6 +5,7 @@ Vite + React +

    diff --git a/src/App.css b/src/App.css index 617cf92..7700277 100644 --- a/src/App.css +++ b/src/App.css @@ -76,3 +76,8 @@ input { letter-spacing: 0.075em; font-feature-settings: "cv18", "zero"; } + +iconify-icon { + position: relative; + top: 0.375em; +} diff --git a/src/App.jsx b/src/App.jsx index 9b4581d..e9b642f 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -122,30 +122,9 @@ export default function App() { ); }}> {message.val.likeCount} - - - + ) : ( )}
    - +
    diff --git a/src/index.css b/src/index.css index 3e9f769..d4bd440 100644 --- a/src/index.css +++ b/src/index.css @@ -1,5 +1,5 @@ :root { - font-family: "Source Sans 3", system-ui, Avenir, Helvetica, Arial, sans-serif; + font-family: "Source Sans 3", system-ui, Helvetica, Arial, sans-serif; line-height: 1.5; font-weight: 400; @@ -68,6 +68,10 @@ button:focus-visible { } } +input { + font-family: inherit; +} + @font-face { font-family: "Jetbrains Mono"; src: url(/JetBrainsMono-Light.woff2); From 5a476ab0170b849bc23dec3fde3da1d206916890 Mon Sep 17 00:00:00 2001 From: jasperteo Date: Sun, 17 Dec 2023 02:20:51 +0800 Subject: [PATCH 14/34] delete storage object together with message --- src/App.css | 4 +- src/App.jsx | 127 +++++++++++++++++++++++++++++++------------------- src/index.css | 17 ++++--- 3 files changed, 89 insertions(+), 59 deletions(-) diff --git a/src/App.css b/src/App.css index 7700277..dabedb7 100644 --- a/src/App.css +++ b/src/App.css @@ -64,7 +64,7 @@ input { text-wrap: balance; } -.edit-delete { +.buttons { font-size: 0.8125em; display: inline-flex; } @@ -79,5 +79,5 @@ input { iconify-icon { position: relative; - top: 0.375em; + top: 0.35em; } diff --git a/src/App.jsx b/src/App.jsx index e9b642f..1d8f065 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -11,6 +11,7 @@ import { update, } from "firebase/database"; import { + deleteObject, getDownloadURL, ref as storageRef, uploadBytes, @@ -31,8 +32,10 @@ export default function App() { const [editValue, setEditValue] = useState(""); //capture file const [file, setFile] = useState(null); - + //capture likes const [liked, setLiked] = useState([]); + //check login status + const [isLoggedIn, setIsLoggedIn] = useState(false); const messagesRef = databaseRef(database, DB_MESSAGES_KEY); @@ -53,11 +56,14 @@ export default function App() { }, []); // eslint-disable-line useEffect(() => { - setIsEditing(messages.map(() => false)); //amount of "false" in array to be same as messages.length - setLiked(messages.map(() => false)); + //amount of "false" in array to be same as messages.length + const arrayFillFalse = [...Array(messages.length)].fill(false); + setIsEditing(arrayFillFalse); + setLiked(arrayFillFalse); }, [messages.length]); const writeData = async () => { + let name = ""; let url = ""; if (file) { const newStorageRef = storageRef( @@ -66,23 +72,28 @@ export default function App() { ); await uploadBytes(newStorageRef, file); url = await getDownloadURL(newStorageRef); + name = file.name; } set(push(messagesRef), { timestamp: `${new Date()}`, edited: "", message: inputValue, - url: url, + fileName: name, + fileUrl: url, likeCount: 0, }); setInputValue(""); setFile(null); }; - const deleteAll = () => remove(messagesRef); + const deleteAll = async () => { + await deleteObject(storageRef(storage, DB_IMAGES_KEY + "/")); + remove(messagesRef); + }; const editData = (data, index) => { setEditValue(data?.val?.message); - setIsEditing((prev) => prev.toSpliced(index, 1, !prev[index])); + setIsEditing((prev) => prev.with(index, !prev[index])); if (isEditing[index]) { update(databaseRef(database, DB_MESSAGES_KEY + "/" + data.key), { edited: `${new Date()}`, @@ -92,13 +103,38 @@ export default function App() { } }; - const deleteData = (data) => + const deleteData = async (data) => { + if (data.val.fileName) { + await deleteObject( + storageRef(storage, DB_IMAGES_KEY + "/" + data.val.fileName) + ); + } remove(databaseRef(database, DB_MESSAGES_KEY + "/" + data.key)); + }; + + const likeUnlike = (data, index) => { + if (liked[index]) { + setLiked((prev) => prev.with(index, !prev[index])); + update(databaseRef(database, DB_MESSAGES_KEY + "/" + data.key), { + likeCount: data.val.likeCount - 1, + }); + } else { + setLiked((prev) => prev.with(index, !prev[index])); + update(databaseRef(database, DB_MESSAGES_KEY + "/" + data.key), { + likeCount: data.val.likeCount + 1, + }); + } + }; // Convert messages in state to message JSX elements to render const messageListItems = messages.map((message, index) => { return ( -
  • +
  • + {/* input if editing, else just show message */} {isEditing[index] ? ( {message.val.message}
  • )} +
    + {/* like button that toggles */} + {liked[index] ? ( + + ) : ( + + )} - {liked[index] ? ( - - ) : ( - - )} - -
    + {/* edit button that also submits edit value, other edit buttons are disabled while editing */}
    + {/* display image if it exist */}
    - {!!message?.val?.url && ( + {!!message?.val?.fileUrl && ( image @@ -186,6 +206,13 @@ export default function App() { Rocket logo

    Rocketgram

    +
    + {!isLoggedIn ? ( + + ) : ( + + )} +
    {/* TODO: Add input field and add text input as messages in Firebase */} e.preventDefault()}> @@ -195,16 +222,20 @@ export default function App() { value={inputValue} onChange={(e) => setInputValue(e.target.value)} /> - -
    setFile(e.target.files[0])} /> -
      {messageListItems}
    +
      + {messageListItems} +
    ); diff --git a/src/index.css b/src/index.css index d4bd440..134ddaa 100644 --- a/src/index.css +++ b/src/index.css @@ -1,3 +1,11 @@ +@font-face { + font-family: "Jetbrains Mono"; + src: url(/JetBrainsMono-Light.woff2); +} +@font-face { + font-family: "Source Sans 3"; + src: url(/SourceSans3VF-Upright.ttf.woff2); +} :root { font-family: "Source Sans 3", system-ui, Helvetica, Arial, sans-serif; line-height: 1.5; @@ -71,12 +79,3 @@ button:focus-visible { input { font-family: inherit; } - -@font-face { - font-family: "Jetbrains Mono"; - src: url(/JetBrainsMono-Light.woff2); -} -@font-face { - font-family: "Source Sans 3"; - src: url(/SourceSans3VF-Upright.ttf.woff2); -} From ead4dbff42ce37a124ad71c6fda2935e0f12b2a3 Mon Sep 17 00:00:00 2001 From: jasperteo Date: Sun, 17 Dec 2023 18:36:49 +0800 Subject: [PATCH 15/34] fixed bug with likes, added basic sign up and log in --- src/App.jsx | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 55 insertions(+), 3 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 1d8f065..06a43a8 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -16,6 +16,10 @@ import { ref as storageRef, uploadBytes, } from "firebase/storage"; +import { + createUserWithEmailAndPassword, + signInWithEmailAndPassword, +} from "firebase/auth"; import { database, storage, auth } from "./firebase"; import { useState, useEffect } from "react"; @@ -36,6 +40,9 @@ export default function App() { const [liked, setLiked] = useState([]); //check login status const [isLoggedIn, setIsLoggedIn] = useState(false); + //Login + const [email, setEmail] = useState(""); + const [password, setPassword] = useState(""); const messagesRef = databaseRef(database, DB_MESSAGES_KEY); @@ -59,7 +66,7 @@ export default function App() { //amount of "false" in array to be same as messages.length const arrayFillFalse = [...Array(messages.length)].fill(false); setIsEditing(arrayFillFalse); - setLiked(arrayFillFalse); + setLiked(messages.map((message) => message.val.like)); }, [messages.length]); const writeData = async () => { @@ -81,13 +88,14 @@ export default function App() { fileName: name, fileUrl: url, likeCount: 0, + like: false, }); setInputValue(""); setFile(null); }; const deleteAll = async () => { - await deleteObject(storageRef(storage, DB_IMAGES_KEY + "/")); + // await deleteObject(storageRef(storage, DB_IMAGES_KEY + "/")); remove(messagesRef); }; @@ -117,15 +125,44 @@ export default function App() { setLiked((prev) => prev.with(index, !prev[index])); update(databaseRef(database, DB_MESSAGES_KEY + "/" + data.key), { likeCount: data.val.likeCount - 1, + like: false, }); } else { setLiked((prev) => prev.with(index, !prev[index])); update(databaseRef(database, DB_MESSAGES_KEY + "/" + data.key), { likeCount: data.val.likeCount + 1, + like: true, }); } }; + const signUp = async () => { + try { + const userCredential = await createUserWithEmailAndPassword( + auth, + email, + password + ); + console.log(userCredential); + } catch (error) { + console.log(error); + } + }; + + const logIn = async () => { + try { + const userCredential = await signInWithEmailAndPassword( + auth, + email, + password + ); + setIsLoggedIn(!isLoggedIn); + console.log(userCredential); + } catch (error) { + console.log(error); + } + }; + // Convert messages in state to message JSX elements to render const messageListItems = messages.map((message, index) => { return ( @@ -207,8 +244,23 @@ export default function App() {

    Rocketgram

    + E-mail:{" "} + setEmail(e.target.value)} + /> +
    + Password:{" "} + setPassword(e.target.value)} + />{" "} +
    + {!isLoggedIn ? ( - + ) : ( )} From 2844b21681ef6b97673f7db44b1bab161e676194 Mon Sep 17 00:00:00 2001 From: jasperteo Date: Mon, 18 Dec 2023 01:21:25 +0800 Subject: [PATCH 16/34] added user authentication --- src/App.jsx | 114 +++++++++++++++++++++++++++++++--------------------- 1 file changed, 69 insertions(+), 45 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 06a43a8..b22097c 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -19,6 +19,7 @@ import { import { createUserWithEmailAndPassword, signInWithEmailAndPassword, + signOut, } from "firebase/auth"; import { database, storage, auth } from "./firebase"; import { useState, useEffect } from "react"; @@ -43,6 +44,8 @@ export default function App() { //Login const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); + //error + const [errorMsg, setErrorMsg] = useState(""); const messagesRef = databaseRef(database, DB_MESSAGES_KEY); @@ -144,8 +147,9 @@ export default function App() { password ); console.log(userCredential); + setErrorMsg(""); } catch (error) { - console.log(error); + setErrorMsg(error.message); } }; @@ -156,10 +160,21 @@ export default function App() { email, password ); - setIsLoggedIn(!isLoggedIn); console.log(userCredential); + setErrorMsg(""); + setIsLoggedIn(!isLoggedIn); + } catch (error) { + setErrorMsg(error.message); + } + }; + + const logOut = async () => { + try { + await signOut(auth); + setErrorMsg(""); + setIsLoggedIn(!isLoggedIn); } catch (error) { - console.log(error); + setErrorMsg(error.message); } }; @@ -243,52 +258,61 @@ export default function App() { Rocket logo

    Rocketgram

    -
    - E-mail:{" "} - setEmail(e.target.value)} - /> -
    - Password:{" "} - setPassword(e.target.value)} - />{" "} -
    - +
    {!isLoggedIn ? ( - + <> + E-mail:{" "} + setEmail(e.target.value)} + /> +
    + Password:{" "} + setPassword(e.target.value)} + />{" "} +
    + + +

    {errorMsg}

    + ) : ( - + <> +

    Welcome: {auth.currentUser.email}

    + +

    {errorMsg}

    + )}
    -
    - {/* TODO: Add input field and add text input as messages in Firebase */} -
    e.preventDefault()}> - setInputValue(e.target.value)} - /> - - -
    - setFile(e.target.files[0])} /> -
    -
      - {messageListItems} -
    -
    + {!!isLoggedIn && ( +
    + {/* TODO: Add input field and add text input as messages in Firebase */} +
    e.preventDefault()}> + setInputValue(e.target.value)} + /> + + +
    + setFile(e.target.files[0])} /> +
    +
      + {messageListItems} +
    +
    + )} ); } From 2bb009cc0544708b67f1c0a9dd336436369c51c6 Mon Sep 17 00:00:00 2001 From: jasperteo Date: Mon, 18 Dec 2023 17:40:25 +0800 Subject: [PATCH 17/34] accomodated likes for different users --- src/App.jsx | 70 +++++++++++++++++++++++++++++------------------------ 1 file changed, 39 insertions(+), 31 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index b22097c..06a4655 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -42,11 +42,15 @@ export default function App() { //check login status const [isLoggedIn, setIsLoggedIn] = useState(false); //Login - const [email, setEmail] = useState(""); - const [password, setPassword] = useState(""); + const [emailValue, setEmailValue] = useState("123@123.com"); + const [passwordValue, setPasswordValue] = useState("123123"); //error const [errorMsg, setErrorMsg] = useState(""); + //user info + const [email, setEmail] = useState(""); + const [uid, setUid] = useState(""); + const messagesRef = databaseRef(database, DB_MESSAGES_KEY); useEffect(() => { @@ -67,10 +71,9 @@ export default function App() { useEffect(() => { //amount of "false" in array to be same as messages.length - const arrayFillFalse = [...Array(messages.length)].fill(false); - setIsEditing(arrayFillFalse); - setLiked(messages.map((message) => message.val.like)); - }, [messages.length]); + setIsEditing([...Array(messages.length)].fill(false)); + setLiked(messages.map((message) => !!message?.val?.like?.[uid])); + }, [messages.length, isLoggedIn]); const writeData = async () => { let name = ""; @@ -91,7 +94,7 @@ export default function App() { fileName: name, fileUrl: url, likeCount: 0, - like: false, + like: { [uid]: false }, }); setInputValue(""); setFile(null); @@ -128,13 +131,13 @@ export default function App() { setLiked((prev) => prev.with(index, !prev[index])); update(databaseRef(database, DB_MESSAGES_KEY + "/" + data.key), { likeCount: data.val.likeCount - 1, - like: false, + like: { ...data.val.like, [uid]: false }, }); } else { setLiked((prev) => prev.with(index, !prev[index])); update(databaseRef(database, DB_MESSAGES_KEY + "/" + data.key), { likeCount: data.val.likeCount + 1, - like: true, + like: { ...data.val.like, [uid]: true }, }); } }; @@ -143,8 +146,8 @@ export default function App() { try { const userCredential = await createUserWithEmailAndPassword( auth, - email, - password + emailValue, + passwordValue ); console.log(userCredential); setErrorMsg(""); @@ -157,11 +160,13 @@ export default function App() { try { const userCredential = await signInWithEmailAndPassword( auth, - email, - password + emailValue, + passwordValue ); console.log(userCredential); setErrorMsg(""); + setEmail(auth.currentUser.email); + setUid(auth.currentUser.uid); setIsLoggedIn(!isLoggedIn); } catch (error) { setErrorMsg(error.message); @@ -258,32 +263,35 @@ export default function App() { Rocket logo

    Rocketgram

    -
    +
    {!isLoggedIn ? ( <> - E-mail:{" "} - setEmail(e.target.value)} - /> -
    - Password:{" "} - setPassword(e.target.value)} - />{" "} -
    +

    + + setEmailValue(e.target.value)} + /> +

    +

    + + setPasswordValue(e.target.value)} + /> +

    +

    {errorMsg}

    -

    {errorMsg}

    ) : ( <> -

    Welcome: {auth.currentUser.email}

    -

    {errorMsg}

    +

    Welcome: {email}

    + )}
    From 03a7e4522c2bacbbdb482cdb0fc6b8d55d1eb1fc Mon Sep 17 00:00:00 2001 From: jasperteo Date: Tue, 19 Dec 2023 11:06:34 +0800 Subject: [PATCH 18/34] updated dependencies --- bun.lockb | Bin 172866 -> 174661 bytes package.json | 8 +-- src/App.jsx | 140 +++++++++++++++++++++++++-------------------------- 3 files changed, 73 insertions(+), 75 deletions(-) diff --git a/bun.lockb b/bun.lockb index b1fea43f8941a5f1cf476f65fa92ad6fc4d9b189..e14ce4e48fb005aa133f73e7ee565f2e39a478ee 100755 GIT binary patch delta 17251 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 b8pzwe1mme|RSW-Mty+&om43EXEnxo-#4@b# delta 16533 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 bi`A2U_*&VcjT*=|t;LDcvFgLMYBBpCH6*M3 diff --git a/package.json b/package.json index cfc7071..9e8817f 100644 --- a/package.json +++ b/package.json @@ -15,13 +15,13 @@ "react-dom": "^18.2.0" }, "devDependencies": { - "@types/react": "^18.2.42", - "@types/react-dom": "^18.2.17", + "@types/react": "^18.2.45", + "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^4.2.1", - "eslint": "^8.55.0", + "eslint": "^8.56.0", "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.5", - "vite": "^5.0.6" + "vite": "^5.0.10" } } diff --git a/src/App.jsx b/src/App.jsx index 06a4655..a5667cb 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -72,8 +72,8 @@ export default function App() { useEffect(() => { //amount of "false" in array to be same as messages.length setIsEditing([...Array(messages.length)].fill(false)); - setLiked(messages.map((message) => !!message?.val?.like?.[uid])); - }, [messages.length, isLoggedIn]); + setLiked(messages.map((message) => !!message.val.like[uid])); + }, [messages.length, isLoggedIn]); // eslint-disable-line const writeData = async () => { let name = ""; @@ -184,78 +184,76 @@ export default function App() { }; // Convert messages in state to message JSX elements to render - const messageListItems = messages.map((message, index) => { - return ( -
  • - {/* input if editing, else just show message */} - {isEditing[index] ? ( - setEditValue(e.target.value)} - /> + const messageListItems = messages.map((message, index) => ( +
  • + {/* input if editing, else just show message */} + {isEditing[index] ? ( + setEditValue(e.target.value)} + /> + ) : ( +
    {message.val.message}
    + )} +
    + {/* like button that toggles */} + {liked[index] ? ( + ) : ( -
    {message.val.message}
    + )} -
    - {/* like button that toggles */} - {liked[index] ? ( - - ) : ( - - )} - {/* edit button that also submits edit value, other edit buttons are disabled while editing */} - - -
    - {/* display image if it exist */} -
    - {!!message?.val?.fileUrl && ( - image - )} -
    -
    - Sent: - {new Date(message.val.timestamp).toLocaleString()} - {!!message?.val?.edited && ( - <> -
    - Edited: - {new Date(message.val.edited).toLocaleString()} - - )} -
    -
  • - ); - }); + {/* edit button that also submits edit value, other edit buttons are disabled while editing */} + + +
    + {/* display image if it exist */} +
    + {!!message?.val?.fileUrl && ( + image + )} +
    +
    + Sent: + {new Date(message.val.timestamp).toLocaleString()} + {!!message?.val?.edited && ( + <> +
    + Edited: + {new Date(message.val.edited).toLocaleString()} + + )} +
    + + )); return ( <> From 7201c8e9c48a26f11aafa362a039f1299ced8226 Mon Sep 17 00:00:00 2001 From: jasperteo Date: Tue, 19 Dec 2023 14:28:53 +0800 Subject: [PATCH 19/34] seperated out Composer --- src/App.css | 6 +- src/App.jsx | 169 +++++++++++++++++------------------------------ src/Composer.jsx | 62 +++++++++++++++++ src/NewsFeed.jsx | 0 4 files changed, 124 insertions(+), 113 deletions(-) create mode 100644 src/Composer.jsx create mode 100644 src/NewsFeed.jsx diff --git a/src/App.css b/src/App.css index dabedb7..837307d 100644 --- a/src/App.css +++ b/src/App.css @@ -35,9 +35,9 @@ .card { padding: 2em; - form * { - margin: 0em 0.5em 0em 0em; - } + width: 50vw; + height: 30vw; + overflow: auto; } .message-box { diff --git a/src/App.jsx b/src/App.jsx index a5667cb..cabeaa6 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -4,39 +4,29 @@ import { onChildAdded, onChildChanged, onChildRemoved, - push, ref as databaseRef, - set, remove, update, } from "firebase/database"; -import { - deleteObject, - getDownloadURL, - ref as storageRef, - uploadBytes, -} from "firebase/storage"; +import { deleteObject, ref as storageRef } from "firebase/storage"; import { createUserWithEmailAndPassword, signInWithEmailAndPassword, signOut, } from "firebase/auth"; -import { database, storage, auth } from "./firebase"; import { useState, useEffect } from "react"; +import { database, storage, auth } from "./firebase"; +import Composer from "./Composer"; // Save the Firebase message folder name as a constant to avoid bugs due to misspelling const DB_MESSAGES_KEY = "messages"; const DB_IMAGES_KEY = "images"; export default function App() { - //capture message const [messages, setMessages] = useState([]); - const [inputValue, setInputValue] = useState(""); //capture edit const [isEditing, setIsEditing] = useState([]); const [editValue, setEditValue] = useState(""); - //capture file - const [file, setFile] = useState(null); //capture likes const [liked, setLiked] = useState([]); //check login status @@ -75,34 +65,20 @@ export default function App() { setLiked(messages.map((message) => !!message.val.like[uid])); }, [messages.length, isLoggedIn]); // eslint-disable-line - const writeData = async () => { - let name = ""; - let url = ""; - if (file) { - const newStorageRef = storageRef( - storage, - DB_IMAGES_KEY + "/" + file.name - ); - await uploadBytes(newStorageRef, file); - url = await getDownloadURL(newStorageRef); - name = file.name; + const likeUnlike = (data, index) => { + if (liked[index]) { + setLiked((prev) => prev.with(index, !prev[index])); + update(databaseRef(database, DB_MESSAGES_KEY + "/" + data.key), { + likeCount: data.val.likeCount - 1, + like: { ...data.val.like, [uid]: false }, + }); + } else { + setLiked((prev) => prev.with(index, !prev[index])); + update(databaseRef(database, DB_MESSAGES_KEY + "/" + data.key), { + likeCount: data.val.likeCount + 1, + like: { ...data.val.like, [uid]: true }, + }); } - set(push(messagesRef), { - timestamp: `${new Date()}`, - edited: "", - message: inputValue, - fileName: name, - fileUrl: url, - likeCount: 0, - like: { [uid]: false }, - }); - setInputValue(""); - setFile(null); - }; - - const deleteAll = async () => { - // await deleteObject(storageRef(storage, DB_IMAGES_KEY + "/")); - remove(messagesRef); }; const editData = (data, index) => { @@ -126,22 +102,6 @@ export default function App() { remove(databaseRef(database, DB_MESSAGES_KEY + "/" + data.key)); }; - const likeUnlike = (data, index) => { - if (liked[index]) { - setLiked((prev) => prev.with(index, !prev[index])); - update(databaseRef(database, DB_MESSAGES_KEY + "/" + data.key), { - likeCount: data.val.likeCount - 1, - like: { ...data.val.like, [uid]: false }, - }); - } else { - setLiked((prev) => prev.with(index, !prev[index])); - update(databaseRef(database, DB_MESSAGES_KEY + "/" + data.key), { - likeCount: data.val.likeCount + 1, - like: { ...data.val.like, [uid]: true }, - }); - } - }; - const signUp = async () => { try { const userCredential = await createUserWithEmailAndPassword( @@ -155,34 +115,6 @@ export default function App() { setErrorMsg(error.message); } }; - - const logIn = async () => { - try { - const userCredential = await signInWithEmailAndPassword( - auth, - emailValue, - passwordValue - ); - console.log(userCredential); - setErrorMsg(""); - setEmail(auth.currentUser.email); - setUid(auth.currentUser.uid); - setIsLoggedIn(!isLoggedIn); - } catch (error) { - setErrorMsg(error.message); - } - }; - - const logOut = async () => { - try { - await signOut(auth); - setErrorMsg(""); - setIsLoggedIn(!isLoggedIn); - } catch (error) { - setErrorMsg(error.message); - } - }; - // Convert messages in state to message JSX elements to render const messageListItems = messages.map((message, index) => (
  • )); + const logIn = async () => { + try { + const userCredential = await signInWithEmailAndPassword( + auth, + emailValue, + passwordValue + ); + console.log(userCredential); + setErrorMsg(""); + setEmail(auth.currentUser.email); + setUid(auth.currentUser.uid); + setIsLoggedIn(!isLoggedIn); + } catch (error) { + setErrorMsg(error.message); + } + }; + + const logOut = async () => { + try { + await signOut(auth); + setErrorMsg(""); + setIsLoggedIn(!isLoggedIn); + } catch (error) { + setErrorMsg(error.message); + } + }; + return ( <>
    @@ -293,32 +252,22 @@ export default function App() { )}
    - {!!isLoggedIn && ( -
    - {/* TODO: Add input field and add text input as messages in Firebase */} -
    e.preventDefault()}> - setInputValue(e.target.value)} - /> - - -
    - setFile(e.target.files[0])} /> -
    -
      - {messageListItems} -
    -
    - )} + +
    + {/* TODO: Add input field and add text input as messages in Firebase */} + {isLoggedIn && ( + + )} +
      + {messageListItems} +
    +
    ); } diff --git a/src/Composer.jsx b/src/Composer.jsx new file mode 100644 index 0000000..995663f --- /dev/null +++ b/src/Composer.jsx @@ -0,0 +1,62 @@ +import { useState } from "react"; +import { database, storage } from "./firebase"; +import { push, set } from "firebase/database"; +import { getDownloadURL, uploadBytes } from "firebase/storage"; + +const DB_MESSAGES_KEY = "messages"; +const DB_IMAGES_KEY = "images"; + +export default function Composer({ uid, databaseRef, storageRef }) { + const [inputValue, setInputValue] = useState(""); + const [file, setFile] = useState(null); + + const messagesRef = databaseRef(database, DB_MESSAGES_KEY); + + const writeData = async () => { + let name = ""; + let url = ""; + if (file) { + const newStorageRef = storageRef( + storage, + DB_IMAGES_KEY + "/" + file.name + ); + await uploadBytes(newStorageRef, file); + url = await getDownloadURL(newStorageRef); + name = file.name; + } + set(push(messagesRef), { + timestamp: `${new Date()}`, + edited: "", + message: inputValue, + fileName: name, + fileUrl: url, + likeCount: 0, + like: { [uid]: false }, + }); + setInputValue(""); + setFile(null); + }; + + return ( +
    (e.preventDefault(), e.target.reset())}> + setInputValue(e.target.value)} + /> + +
    + setFile(e.target.files[0])} + /> +
    + ); +} diff --git a/src/NewsFeed.jsx b/src/NewsFeed.jsx new file mode 100644 index 0000000..e69de29 From 6efae8273bc221aedf89662e7657ad333063f8be Mon Sep 17 00:00:00 2001 From: jasperteo Date: Tue, 19 Dec 2023 21:15:53 +0800 Subject: [PATCH 20/34] made edit and delete and like user dependent --- src/App.jsx | 63 ++++++++++++++++++++++++++++-------------------- src/Composer.jsx | 10 ++++++-- src/NewsFeed.jsx | 1 + 3 files changed, 46 insertions(+), 28 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index cabeaa6..751f230 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -102,19 +102,6 @@ export default function App() { remove(databaseRef(database, DB_MESSAGES_KEY + "/" + data.key)); }; - const signUp = async () => { - try { - const userCredential = await createUserWithEmailAndPassword( - auth, - emailValue, - passwordValue - ); - console.log(userCredential); - setErrorMsg(""); - } catch (error) { - setErrorMsg(error.message); - } - }; // Convert messages in state to message JSX elements to render const messageListItems = messages.map((message, index) => (
  • {/* like button that toggles */} {liked[index] ? ( - ) : ( - - + {/* display image if it exist */}
    @@ -187,6 +182,20 @@ export default function App() {
  • )); + const signUp = async () => { + try { + const userCredential = await createUserWithEmailAndPassword( + auth, + emailValue, + passwordValue + ); + console.log(userCredential); + setErrorMsg(""); + } catch (error) { + setErrorMsg(error.message); + } + }; + const logIn = async () => { try { const userCredential = await signInWithEmailAndPassword( @@ -209,6 +218,7 @@ export default function App() { await signOut(auth); setErrorMsg(""); setIsLoggedIn(!isLoggedIn); + setUid(""); } catch (error) { setErrorMsg(error.message); } @@ -252,16 +262,17 @@ export default function App() { )} - + {isLoggedIn && ( + + )}
    {/* TODO: Add input field and add text input as messages in Firebase */} - {isLoggedIn && ( - - )}
      diff --git a/src/Composer.jsx b/src/Composer.jsx index 995663f..7b95bcc 100644 --- a/src/Composer.jsx +++ b/src/Composer.jsx @@ -1,12 +1,17 @@ import { useState } from "react"; -import { database, storage } from "./firebase"; import { push, set } from "firebase/database"; import { getDownloadURL, uploadBytes } from "firebase/storage"; const DB_MESSAGES_KEY = "messages"; const DB_IMAGES_KEY = "images"; -export default function Composer({ uid, databaseRef, storageRef }) { +export default function Composer({ + uid, + database, + databaseRef, + storage, + storageRef, +}) { const [inputValue, setInputValue] = useState(""); const [file, setFile] = useState(null); @@ -31,6 +36,7 @@ export default function Composer({ uid, databaseRef, storageRef }) { fileName: name, fileUrl: url, likeCount: 0, + poster: uid, like: { [uid]: false }, }); setInputValue(""); diff --git a/src/NewsFeed.jsx b/src/NewsFeed.jsx index e69de29..0679961 100644 --- a/src/NewsFeed.jsx +++ b/src/NewsFeed.jsx @@ -0,0 +1 @@ +export default function NewsFeed() {} From 833af938cc02accdb026e635ebc26c95ece4cba4 Mon Sep 17 00:00:00 2001 From: jasperteo Date: Wed, 20 Dec 2023 00:33:40 +0800 Subject: [PATCH 21/34] refactor out NewsFeed --- src/App.jsx | 177 ++--------------------------------------------- src/Composer.jsx | 17 +++-- src/NewsFeed.jsx | 164 ++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 176 insertions(+), 182 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 751f230..d03df9a 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,34 +1,16 @@ import logo from "/logo.png"; import "./App.css"; -import { - onChildAdded, - onChildChanged, - onChildRemoved, - ref as databaseRef, - remove, - update, -} from "firebase/database"; -import { deleteObject, ref as storageRef } from "firebase/storage"; import { createUserWithEmailAndPassword, signInWithEmailAndPassword, signOut, } from "firebase/auth"; -import { useState, useEffect } from "react"; -import { database, storage, auth } from "./firebase"; +import { useState } from "react"; +import { auth } from "./firebase"; import Composer from "./Composer"; - -// Save the Firebase message folder name as a constant to avoid bugs due to misspelling -const DB_MESSAGES_KEY = "messages"; -const DB_IMAGES_KEY = "images"; +import NewsFeed from "./NewsFeed"; export default function App() { - const [messages, setMessages] = useState([]); - //capture edit - const [isEditing, setIsEditing] = useState([]); - const [editValue, setEditValue] = useState(""); - //capture likes - const [liked, setLiked] = useState([]); //check login status const [isLoggedIn, setIsLoggedIn] = useState(false); //Login @@ -41,147 +23,6 @@ export default function App() { const [email, setEmail] = useState(""); const [uid, setUid] = useState(""); - const messagesRef = databaseRef(database, DB_MESSAGES_KEY); - - useEffect(() => { - onChildAdded(messagesRef, (data) => - setMessages((prev) => [...prev, { key: data.key, val: data.val() }]) - ); - onChildRemoved(messagesRef, (data) => - setMessages((prev) => prev.filter((item) => item.key !== data.key)) - ); - onChildChanged(messagesRef, (data) => - setMessages((prev) => - prev.map((item) => - item.key === data.key ? { key: data.key, val: data.val() } : item - ) - ) - ); - }, []); // eslint-disable-line - - useEffect(() => { - //amount of "false" in array to be same as messages.length - setIsEditing([...Array(messages.length)].fill(false)); - setLiked(messages.map((message) => !!message.val.like[uid])); - }, [messages.length, isLoggedIn]); // eslint-disable-line - - const likeUnlike = (data, index) => { - if (liked[index]) { - setLiked((prev) => prev.with(index, !prev[index])); - update(databaseRef(database, DB_MESSAGES_KEY + "/" + data.key), { - likeCount: data.val.likeCount - 1, - like: { ...data.val.like, [uid]: false }, - }); - } else { - setLiked((prev) => prev.with(index, !prev[index])); - update(databaseRef(database, DB_MESSAGES_KEY + "/" + data.key), { - likeCount: data.val.likeCount + 1, - like: { ...data.val.like, [uid]: true }, - }); - } - }; - - const editData = (data, index) => { - setEditValue(data?.val?.message); - setIsEditing((prev) => prev.with(index, !prev[index])); - if (isEditing[index]) { - update(databaseRef(database, DB_MESSAGES_KEY + "/" + data.key), { - edited: `${new Date()}`, - message: editValue, - }); - setEditValue(""); - } - }; - - const deleteData = async (data) => { - if (data.val.fileName) { - await deleteObject( - storageRef(storage, DB_IMAGES_KEY + "/" + data.val.fileName) - ); - } - remove(databaseRef(database, DB_MESSAGES_KEY + "/" + data.key)); - }; - - // Convert messages in state to message JSX elements to render - const messageListItems = messages.map((message, index) => ( -
    • - {/* input if editing, else just show message */} - {isEditing[index] ? ( - setEditValue(e.target.value)} - /> - ) : ( -
      {message.val.message}
      - )} -
      - {/* like button that toggles */} - {liked[index] ? ( - - ) : ( - - )} - - {/* edit button that also submits edit value, other edit buttons are disabled while editing */} - - -
      - {/* display image if it exist */} -
      - {!!message?.val?.fileUrl && ( - image - )} -
      -
      - Sent: - {new Date(message.val.timestamp).toLocaleString()} - {!!message?.val?.edited && ( - <> -
      - Edited: - {new Date(message.val.edited).toLocaleString()} - - )} -
      -
    • - )); - const signUp = async () => { try { const userCredential = await createUserWithEmailAndPassword( @@ -262,21 +103,13 @@ export default function App() { )}
    - {isLoggedIn && ( - - )} + {isLoggedIn && }
    {/* TODO: Add input field and add text input as messages in Firebase */}
      - {messageListItems} +
    diff --git a/src/Composer.jsx b/src/Composer.jsx index 7b95bcc..2c88e9c 100644 --- a/src/Composer.jsx +++ b/src/Composer.jsx @@ -1,17 +1,16 @@ import { useState } from "react"; -import { push, set } from "firebase/database"; -import { getDownloadURL, uploadBytes } from "firebase/storage"; +import { push, set, ref as databaseRef } from "firebase/database"; +import { + getDownloadURL, + uploadBytes, + ref as storageRef, +} from "firebase/storage"; +import { database, storage } from "./firebase"; const DB_MESSAGES_KEY = "messages"; const DB_IMAGES_KEY = "images"; -export default function Composer({ - uid, - database, - databaseRef, - storage, - storageRef, -}) { +export default function Composer({ uid }) { const [inputValue, setInputValue] = useState(""); const [file, setFile] = useState(null); diff --git a/src/NewsFeed.jsx b/src/NewsFeed.jsx index 0679961..599c686 100644 --- a/src/NewsFeed.jsx +++ b/src/NewsFeed.jsx @@ -1 +1,163 @@ -export default function NewsFeed() {} +import { useEffect, useState } from "react"; +import { + onChildAdded, + onChildChanged, + onChildRemoved, + ref as databaseRef, + remove, + update, +} from "firebase/database"; +import { deleteObject, ref as storageRef } from "firebase/storage"; +import { database, storage } from "./firebase"; + +const DB_MESSAGES_KEY = "messages"; +const DB_IMAGES_KEY = "images"; +const messagesRef = databaseRef(database, DB_MESSAGES_KEY); + +export default function NewsFeed({ isLoggedIn, uid }) { + const [messages, setMessages] = useState([]); + const [isEditing, setIsEditing] = useState([]); + const [editValue, setEditValue] = useState(""); + const [liked, setLiked] = useState([]); + + useEffect(() => { + onChildAdded(messagesRef, (data) => + setMessages((prev) => [...prev, { key: data.key, val: data.val() }]) + ); + onChildRemoved(messagesRef, (data) => + setMessages((prev) => prev.filter((item) => item.key !== data.key)) + ); + onChildChanged(messagesRef, (data) => + setMessages((prev) => + prev.map((item) => + item.key === data.key ? { key: data.key, val: data.val() } : item + ) + ) + ); + }, []); // eslint-disable-line + + useEffect(() => { + //amount of "false" in array to be same as messages.length + setIsEditing([...Array(messages.length)].fill(false)); + setLiked(messages.map((message) => !!message.val.like[uid])); + }, [messages.length, isLoggedIn]); // eslint-disable-line + + const likeUnlike = (data, index) => { + if (liked[index]) { + setLiked((prev) => prev.with(index, !prev[index])); + update(databaseRef(database, DB_MESSAGES_KEY + "/" + data.key), { + likeCount: data.val.likeCount - 1, + like: { ...data.val.like, [uid]: false }, + }); + } else { + setLiked((prev) => prev.with(index, !prev[index])); + update(databaseRef(database, DB_MESSAGES_KEY + "/" + data.key), { + likeCount: data.val.likeCount + 1, + like: { ...data.val.like, [uid]: true }, + }); + } + }; + + const editData = (data, index) => { + setEditValue(data?.val?.message); + setIsEditing((prev) => prev.with(index, !prev[index])); + if (isEditing[index]) { + update(databaseRef(database, DB_MESSAGES_KEY + "/" + data.key), { + edited: `${new Date()}`, + message: editValue, + }); + setEditValue(""); + } + }; + + const deleteData = async (data) => { + if (data.val.fileName) { + await deleteObject( + storageRef(storage, DB_IMAGES_KEY + "/" + data.val.fileName) + ); + } + remove(databaseRef(database, DB_MESSAGES_KEY + "/" + data.key)); + }; + + return ( + // Convert messages in state to message JSX elements to render + messages.map((message, index) => ( +
  • + {/* input if editing, else just show message */} + {isEditing[index] ? ( + setEditValue(e.target.value)} + /> + ) : ( +
    {message.val.message}
    + )} +
    + {/* like button that toggles */} + {liked[index] ? ( + + ) : ( + + )} + + {/* edit button that also submits edit value, other edit buttons are disabled while editing */} + + +
    + {/* display image if it exist */} +
    + {!!message?.val?.fileUrl && ( + image + )} +
    +
    + Sent: + {new Date(message.val.timestamp).toLocaleString()} + {!!message?.val?.edited && ( + <> +
    + Edited: + {new Date(message.val.edited).toLocaleString()} + + )} +
    +
  • + )) + ); +} From 119889618f1fb5bfcf928ff01c6c7b56dea87dac Mon Sep 17 00:00:00 2001 From: jasperteo Date: Thu, 21 Dec 2023 13:53:26 +0800 Subject: [PATCH 22/34] detects logged in state --- src/App.jsx | 101 +++++--------------------------------------- src/AuthForm.jsx | 108 +++++++++++++++++++++++++++++++++++++++++++++++ src/Composer.jsx | 4 +- src/NewsFeed.jsx | 1 + 4 files changed, 123 insertions(+), 91 deletions(-) create mode 100644 src/AuthForm.jsx diff --git a/src/App.jsx b/src/App.jsx index d03df9a..0212b17 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,111 +1,32 @@ -import logo from "/logo.png"; -import "./App.css"; -import { - createUserWithEmailAndPassword, - signInWithEmailAndPassword, - signOut, -} from "firebase/auth"; import { useState } from "react"; -import { auth } from "./firebase"; import Composer from "./Composer"; import NewsFeed from "./NewsFeed"; +import AuthForm from "./AuthForm"; +import logo from "/logo.png"; +import "./App.css"; export default function App() { //check login status const [isLoggedIn, setIsLoggedIn] = useState(false); - //Login - const [emailValue, setEmailValue] = useState("123@123.com"); - const [passwordValue, setPasswordValue] = useState("123123"); - //error - const [errorMsg, setErrorMsg] = useState(""); - //user info const [email, setEmail] = useState(""); const [uid, setUid] = useState(""); - const signUp = async () => { - try { - const userCredential = await createUserWithEmailAndPassword( - auth, - emailValue, - passwordValue - ); - console.log(userCredential); - setErrorMsg(""); - } catch (error) { - setErrorMsg(error.message); - } - }; - - const logIn = async () => { - try { - const userCredential = await signInWithEmailAndPassword( - auth, - emailValue, - passwordValue - ); - console.log(userCredential); - setErrorMsg(""); - setEmail(auth.currentUser.email); - setUid(auth.currentUser.uid); - setIsLoggedIn(!isLoggedIn); - } catch (error) { - setErrorMsg(error.message); - } - }; - - const logOut = async () => { - try { - await signOut(auth); - setErrorMsg(""); - setIsLoggedIn(!isLoggedIn); - setUid(""); - } catch (error) { - setErrorMsg(error.message); - } - }; - return ( <>
    Rocket logo

    Rocketgram

    -
    - {!isLoggedIn ? ( - <> -

    - - setEmailValue(e.target.value)} - /> -

    -

    - - setPasswordValue(e.target.value)} - /> -

    -

    {errorMsg}

    - - - - ) : ( - <> -

    {errorMsg}

    -

    Welcome: {email}

    - - - )} -
    - {isLoggedIn && } + + {isLoggedIn && }
    - {/* TODO: Add input field and add text input as messages in Firebase */}
      diff --git a/src/AuthForm.jsx b/src/AuthForm.jsx new file mode 100644 index 0000000..54bda7b --- /dev/null +++ b/src/AuthForm.jsx @@ -0,0 +1,108 @@ +import { useEffect, useState } from "react"; +import { + createUserWithEmailAndPassword, + onAuthStateChanged, + signInWithEmailAndPassword, + signOut, +} from "firebase/auth"; +import { auth } from "./firebase"; + +export default function AuthForm({ + isLoggedIn, + setIsLoggedIn, + email, + setEmail, + setUid, +}) { + //Login + const [emailValue, setEmailValue] = useState(""); + const [passwordValue, setPasswordValue] = useState(""); + //error + const [errorMsg, setErrorMsg] = useState(""); + + useEffect(() => { + onAuthStateChanged(auth, (user) => { + if (user) { + setIsLoggedIn(true); + setEmail(auth.currentUser.email); + setUid(auth.currentUser.uid); + } else setIsLoggedIn(false); + }); + }, []); // eslint-disable-line + + const signUp = async () => { + try { + const userCredential = await createUserWithEmailAndPassword( + auth, + emailValue, + passwordValue + ); + console.log(userCredential); + setErrorMsg(""); + } catch (error) { + setErrorMsg(error.message); + } + }; + + const logIn = async () => { + try { + const userCredential = await signInWithEmailAndPassword( + auth, + emailValue, + passwordValue + ); + console.log(userCredential); + setErrorMsg(""); + } catch (error) { + setErrorMsg(error.message); + } + }; + + const logOut = async () => { + try { + await signOut(auth); + setErrorMsg(""); + setUid(""); + } catch (error) { + setErrorMsg(error.message); + } + }; + return ( + <> + {!isLoggedIn ? ( + <> +

      + + setEmailValue(e.target.value)} + /> +

      +

      + + setPasswordValue(e.target.value)} + /> +

      +

      {errorMsg}

      + + + + ) : ( + <> +

      {errorMsg}

      +

      Welcome: {email}

      + + + )} + + ); +} diff --git a/src/Composer.jsx b/src/Composer.jsx index 2c88e9c..341ad81 100644 --- a/src/Composer.jsx +++ b/src/Composer.jsx @@ -10,7 +10,7 @@ import { database, storage } from "./firebase"; const DB_MESSAGES_KEY = "messages"; const DB_IMAGES_KEY = "images"; -export default function Composer({ uid }) { +export default function Composer({ uid, email }) { const [inputValue, setInputValue] = useState(""); const [file, setFile] = useState(null); @@ -36,6 +36,7 @@ export default function Composer({ uid }) { fileUrl: url, likeCount: 0, poster: uid, + posterEmail: email, like: { [uid]: false }, }); setInputValue(""); @@ -45,6 +46,7 @@ export default function Composer({ uid }) { return (
      (e.preventDefault(), e.target.reset())}>
      +

      Author: {message.val.posterEmail}

      Sent: {new Date(message.val.timestamp).toLocaleString()} {!!message?.val?.edited && ( From 12d2d688fc6530a06886aac89336abf1c0355924 Mon Sep 17 00:00:00 2001 From: jasperteo Date: Fri, 22 Dec 2023 00:51:18 +0800 Subject: [PATCH 23/34] added router --- bun.lockb | Bin 174661 -> 175884 bytes package.json | 3 ++- src/App.jsx | 65 +++++++++++++++++++++++++++++++++++------------ src/AuthForm.jsx | 22 +++------------- src/NavBar.jsx | 13 ++++++++++ src/NewsFeed.jsx | 1 + src/main.jsx | 1 - 7 files changed, 68 insertions(+), 37 deletions(-) create mode 100644 src/NavBar.jsx diff --git a/bun.lockb b/bun.lockb index e14ce4e48fb005aa133f73e7ee565f2e39a478ee..8fcdc90bdac9c16669575abd00205c7351f934d9 100755 GIT binary patch delta 35003 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 Pji?j6)wjA{fA0SQLbUPg delta 34588 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 URki4bvQ { + onAuthStateChanged(auth, (user) => { + if (user) { + setIsLoggedIn(true); + setEmail(auth.currentUser.email); + setUid(auth.currentUser.uid); + } else setIsLoggedIn(false); + }); + }, []); // eslint-disable-line + + const router = createBrowserRouter([ + { + path: "/instagram-3.2/", + element: ( + <> + + + + ), + }, + { + path: "/instagram-3.2/NewsFeed", + element: ( + <> + + {isLoggedIn && } +
      +
        + +
      +
      + + ), + }, + ]); + return ( <>
      Rocket logo

      Rocketgram

      - - {isLoggedIn && } -
      -
        - -
      -
      + ); } diff --git a/src/AuthForm.jsx b/src/AuthForm.jsx index 54bda7b..3232aa5 100644 --- a/src/AuthForm.jsx +++ b/src/AuthForm.jsx @@ -1,35 +1,18 @@ -import { useEffect, useState } from "react"; +import { useState } from "react"; import { createUserWithEmailAndPassword, - onAuthStateChanged, signInWithEmailAndPassword, signOut, } from "firebase/auth"; import { auth } from "./firebase"; -export default function AuthForm({ - isLoggedIn, - setIsLoggedIn, - email, - setEmail, - setUid, -}) { +export default function AuthForm({ isLoggedIn, email, setEmail, setUid }) { //Login const [emailValue, setEmailValue] = useState(""); const [passwordValue, setPasswordValue] = useState(""); //error const [errorMsg, setErrorMsg] = useState(""); - useEffect(() => { - onAuthStateChanged(auth, (user) => { - if (user) { - setIsLoggedIn(true); - setEmail(auth.currentUser.email); - setUid(auth.currentUser.uid); - } else setIsLoggedIn(false); - }); - }, []); // eslint-disable-line - const signUp = async () => { try { const userCredential = await createUserWithEmailAndPassword( @@ -63,6 +46,7 @@ export default function AuthForm({ await signOut(auth); setErrorMsg(""); setUid(""); + setEmail(""); } catch (error) { setErrorMsg(error.message); } diff --git a/src/NavBar.jsx b/src/NavBar.jsx new file mode 100644 index 0000000..48da024 --- /dev/null +++ b/src/NavBar.jsx @@ -0,0 +1,13 @@ +import { Link } from "react-router-dom"; +export default function NavBar() { + return ( + <> + + + + + + + + ); +} diff --git a/src/NewsFeed.jsx b/src/NewsFeed.jsx index 25e9640..29ab23e 100644 --- a/src/NewsFeed.jsx +++ b/src/NewsFeed.jsx @@ -8,6 +8,7 @@ import { update, } from "firebase/database"; import { deleteObject, ref as storageRef } from "firebase/storage"; + import { database, storage } from "./firebase"; const DB_MESSAGES_KEY = "messages"; diff --git a/src/main.jsx b/src/main.jsx index 3fe8cb7..ac77a71 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -1,4 +1,3 @@ -import React from "react"; import ReactDOM from "react-dom/client"; import App from "./App.jsx"; import "./index.css"; From 1a2cac58de25840bdf0923881a930d6f96b10acb Mon Sep 17 00:00:00 2001 From: jasperteo Date: Fri, 22 Dec 2023 16:59:34 +0800 Subject: [PATCH 24/34] fixed bug with github pages --- .github/workflows/static.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index be11c69..77ac720 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -42,10 +42,11 @@ jobs: env: VITE_API_KEY: ${{ secrets.VITE_API_KEY }} VITE_AUTH_DOMAIN: ${{ secrets.VITE_AUTH_DOMAIN }} + VITE_DATABASE_URL: ${{ secrets.VITE_DATABASE_URL }} VITE_PROJECT_ID: ${{ secrets.VITE_PROJECT_ID }} VITE_STORAGE_BUCKET: ${{ secrets.VITE_STORAGE_BUCKET }} VITE_MESSAGING_SENDER_ID: ${{ secrets.VITE_MESSAGING_SENDER_ID }} - VITE_APP_ID: 1:${{ secrets.VITE_APP_ID }} + VITE_APP_ID: ${{ secrets.VITE_APP_ID }} - name: Setup Pages uses: actions/configure-pages@v3 - name: Upload artifact From cbb10b62c21a0c0effab5d4ca7a60ae1f89206be Mon Sep 17 00:00:00 2001 From: jasperteo Date: Fri, 22 Dec 2023 20:15:57 +0800 Subject: [PATCH 25/34] github pages SPA url 404 error fix --- index.html | 46 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index ac36089..2a837b4 100644 --- a/index.html +++ b/index.html @@ -4,11 +4,53 @@ - Vite + React - + Rocketgram +
      + From 142c8861e623701a6b49e69d4cc8028d26419214 Mon Sep 17 00:00:00 2001 From: jasperteo Date: Fri, 22 Dec 2023 20:19:51 +0800 Subject: [PATCH 26/34] undo fix --- index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index 2a837b4..7282398 100644 --- a/index.html +++ b/index.html @@ -5,7 +5,7 @@ Rocketgram - -->
      From 7c32ef32f935580665d267bb4a6cc7169eda3cc0 Mon Sep 17 00:00:00 2001 From: jasperteo Date: Fri, 22 Dec 2023 20:40:09 +0800 Subject: [PATCH 27/34] trying fix --- 404.html | 51 +++++++++++++++++++++++++++++++++++++++++++ index.html | 64 ++++++++++++++++++++++-------------------------------- 2 files changed, 77 insertions(+), 38 deletions(-) create mode 100644 404.html diff --git a/404.html b/404.html new file mode 100644 index 0000000..0a2c808 --- /dev/null +++ b/404.html @@ -0,0 +1,51 @@ + + + + + + Single Page Apps for GitHub Pages + + + + diff --git a/index.html b/index.html index 7282398..dacb78e 100644 --- a/index.html +++ b/index.html @@ -5,48 +5,36 @@ Rocketgram - + --> + .split("&") + .map(function (s) { + return s.replace(/~and~/g, "&"); + }) + .join("?"); + window.history.replaceState( + null, + null, + l.pathname.slice(0, -1) + decoded + l.hash + ); + } + })(window.location); + +
      From 0e6584ae24799b487934af1d61de3f83784b59ac Mon Sep 17 00:00:00 2001 From: jasperteo Date: Fri, 22 Dec 2023 20:48:19 +0800 Subject: [PATCH 28/34] undo fix --- 404.html | 51 --------------------------------------------------- index.html | 30 ------------------------------ 2 files changed, 81 deletions(-) delete mode 100644 404.html diff --git a/404.html b/404.html deleted file mode 100644 index 0a2c808..0000000 --- a/404.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - Single Page Apps for GitHub Pages - - - - diff --git a/index.html b/index.html index dacb78e..387fe81 100644 --- a/index.html +++ b/index.html @@ -5,36 +5,6 @@ Rocketgram - - -
      From ceeac0a4465a3eb4e7cfabb28bba5bcfc708a9e0 Mon Sep 17 00:00:00 2001 From: jasperteo Date: Fri, 22 Dec 2023 23:52:03 +0800 Subject: [PATCH 29/34] replaced browser router with hash router --- src/App.jsx | 8 ++++---- src/NavBar.jsx | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index a86bf4a..4563491 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,5 +1,5 @@ import { useState, useEffect } from "react"; -import { createBrowserRouter, RouterProvider } from "react-router-dom"; +import { createHashRouter, RouterProvider } from "react-router-dom"; import Composer from "./Composer"; import NewsFeed from "./NewsFeed"; import AuthForm from "./AuthForm"; @@ -26,9 +26,9 @@ export default function App() { }); }, []); // eslint-disable-line - const router = createBrowserRouter([ + const router = createHashRouter([ { - path: "/instagram-3.2/", + path: "/", element: ( <> @@ -42,7 +42,7 @@ export default function App() { ), }, { - path: "/instagram-3.2/NewsFeed", + path: "/NewsFeed", element: ( <> diff --git a/src/NavBar.jsx b/src/NavBar.jsx index 48da024..5f5ae54 100644 --- a/src/NavBar.jsx +++ b/src/NavBar.jsx @@ -2,10 +2,10 @@ import { Link } from "react-router-dom"; export default function NavBar() { return ( <> - + - + From bd20721aab20231f6ce4c1cd7acba1c1221b15a8 Mon Sep 17 00:00:00 2001 From: jasperteo Date: Fri, 29 Dec 2023 08:15:37 +0800 Subject: [PATCH 30/34] useEffect fixes --- src/App.jsx | 2 +- src/NewsFeed.jsx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 4563491..669e8b6 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -24,7 +24,7 @@ export default function App() { setUid(auth.currentUser.uid); } else setIsLoggedIn(false); }); - }, []); // eslint-disable-line + }, []); const router = createHashRouter([ { diff --git a/src/NewsFeed.jsx b/src/NewsFeed.jsx index 29ab23e..97890a3 100644 --- a/src/NewsFeed.jsx +++ b/src/NewsFeed.jsx @@ -35,13 +35,13 @@ export default function NewsFeed({ isLoggedIn, uid }) { ) ) ); - }, []); // eslint-disable-line + }, []); useEffect(() => { //amount of "false" in array to be same as messages.length setIsEditing([...Array(messages.length)].fill(false)); setLiked(messages.map((message) => !!message.val.like[uid])); - }, [messages.length, isLoggedIn]); // eslint-disable-line + }, [messages, uid]); const likeUnlike = (data, index) => { if (liked[index]) { From 49a7d60a40fd121fa8b43180e222c43d35012360 Mon Sep 17 00:00:00 2001 From: jasperteo Date: Sat, 30 Dec 2023 03:28:47 +0800 Subject: [PATCH 31/34] added detach listener function to useEffect for strict mode --- src/NewsFeed.jsx | 2 ++ src/main.jsx | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/NewsFeed.jsx b/src/NewsFeed.jsx index 97890a3..5973be4 100644 --- a/src/NewsFeed.jsx +++ b/src/NewsFeed.jsx @@ -6,6 +6,7 @@ import { ref as databaseRef, remove, update, + off, } from "firebase/database"; import { deleteObject, ref as storageRef } from "firebase/storage"; @@ -35,6 +36,7 @@ export default function NewsFeed({ isLoggedIn, uid }) { ) ) ); + return () => off(messagesRef); }, []); useEffect(() => { diff --git a/src/main.jsx b/src/main.jsx index ac77a71..04f48d9 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -1,5 +1,10 @@ import ReactDOM from "react-dom/client"; +import React from "react"; import App from "./App.jsx"; import "./index.css"; -ReactDOM.createRoot(document.getElementById("root")).render(); +ReactDOM.createRoot(document.getElementById("root")).render( + + + +); From 72c9ccacc524d4ed40ed356a480ad8c0d0ffb94f Mon Sep 17 00:00:00 2001 From: jasperteo Date: Sat, 30 Dec 2023 03:32:16 +0800 Subject: [PATCH 32/34] changed app build command --- .github/workflows/static.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index 77ac720..60469f9 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -38,7 +38,7 @@ jobs: - name: Install dependencies run: bun install - name: Build - run: bunx vite build + run: bunx --bun vite build env: VITE_API_KEY: ${{ secrets.VITE_API_KEY }} VITE_AUTH_DOMAIN: ${{ secrets.VITE_AUTH_DOMAIN }} From b1e2b5a4f94a4b032d3676acb4ebd0f881aa20bb Mon Sep 17 00:00:00 2001 From: jasperteo Date: Tue, 2 Jan 2024 14:16:00 +0800 Subject: [PATCH 33/34] firebase hosting --- .firebase/hosting.ZGlzdA.cache | 6 ++++ .firebaserc | 5 +++ .github/workflows/static.yml | 59 ---------------------------------- firebase.json | 16 +++++++++ 4 files changed, 27 insertions(+), 59 deletions(-) create mode 100644 .firebase/hosting.ZGlzdA.cache create mode 100644 .firebaserc delete mode 100644 .github/workflows/static.yml create mode 100644 firebase.json diff --git a/.firebase/hosting.ZGlzdA.cache b/.firebase/hosting.ZGlzdA.cache new file mode 100644 index 0000000..be7f868 --- /dev/null +++ b/.firebase/hosting.ZGlzdA.cache @@ -0,0 +1,6 @@ +index.html,1704176021253,78dbd630820dbab73673c587c12b69f1fcab3a54b55b856404286d483dd14b19 +assets/index-QMTPcTcZ.css,1704176021253,ae20ab9e32f733d718e58156fdfe7e626402487f2b517c774b69b968a80c5fe7 +logo.png,1704176021126,a4f3d73a96357dc00ef4132fd3c12aafb62a1493729a9d6f97252a8d8bcd532d +JetBrainsMono-Light.woff2,1704176021125,5117442cda8e5a3cafaafbbdf6758ed37f7ce347798b4e537a2168ad0e3bd88f +SourceSans3VF-Upright.ttf.woff2,1704176021126,a5e8c4da5456f6b9675784affac017e8d160cf3983598e323352cfae09332c5e +assets/index-AxPC6F22.js,1704176021253,4579863da50676eca6a81f5634280deabf43506db41948b0ed6acd8863255747 diff --git a/.firebaserc b/.firebaserc new file mode 100644 index 0000000..d839c35 --- /dev/null +++ b/.firebaserc @@ -0,0 +1,5 @@ +{ + "projects": { + "default": "rocketgram-b65c3" + } +} diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml deleted file mode 100644 index 60469f9..0000000 --- a/.github/workflows/static.yml +++ /dev/null @@ -1,59 +0,0 @@ -# Simple workflow for deploying static content to GitHub Pages -name: Deploy static content to Pages - -on: - # Runs on pushes targeting the default branch - push: - branches: ["main"] - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages -permissions: - contents: read - pages: write - id-token: write - -# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. -# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. -concurrency: - group: "pages" - cancel-in-progress: false - -jobs: - # Single deploy job since we're just deploying - deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Setup Bun environment - uses: oven-sh/setup-bun@v1 - with: - bun-version: latest - - name: Install dependencies - run: bun install - - name: Build - run: bunx --bun vite build - env: - VITE_API_KEY: ${{ secrets.VITE_API_KEY }} - VITE_AUTH_DOMAIN: ${{ secrets.VITE_AUTH_DOMAIN }} - VITE_DATABASE_URL: ${{ secrets.VITE_DATABASE_URL }} - VITE_PROJECT_ID: ${{ secrets.VITE_PROJECT_ID }} - VITE_STORAGE_BUCKET: ${{ secrets.VITE_STORAGE_BUCKET }} - VITE_MESSAGING_SENDER_ID: ${{ secrets.VITE_MESSAGING_SENDER_ID }} - VITE_APP_ID: ${{ secrets.VITE_APP_ID }} - - name: Setup Pages - uses: actions/configure-pages@v3 - - name: Upload artifact - uses: actions/upload-pages-artifact@v2 - with: - # Upload entire repository - path: "./dist" - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v2 diff --git a/firebase.json b/firebase.json new file mode 100644 index 0000000..2c33c29 --- /dev/null +++ b/firebase.json @@ -0,0 +1,16 @@ +{ + "hosting": { + "public": "dist", + "ignore": [ + "firebase.json", + "**/.*", + "**/node_modules/**" + ], + "rewrites": [ + { + "source": "**", + "destination": "/index.html" + } + ] + } +} From 637d79d83772134bd55c5c3da1f4e5dc6b746b5d Mon Sep 17 00:00:00 2001 From: jasperteo Date: Tue, 2 Jan 2024 14:24:33 +0800 Subject: [PATCH 34/34] firebase hosting --- .firebase/hosting.ZGlzdA.cache | 12 ++++++------ firebase.json | 6 +----- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/.firebase/hosting.ZGlzdA.cache b/.firebase/hosting.ZGlzdA.cache index be7f868..06e65e5 100644 --- a/.firebase/hosting.ZGlzdA.cache +++ b/.firebase/hosting.ZGlzdA.cache @@ -1,6 +1,6 @@ -index.html,1704176021253,78dbd630820dbab73673c587c12b69f1fcab3a54b55b856404286d483dd14b19 -assets/index-QMTPcTcZ.css,1704176021253,ae20ab9e32f733d718e58156fdfe7e626402487f2b517c774b69b968a80c5fe7 -logo.png,1704176021126,a4f3d73a96357dc00ef4132fd3c12aafb62a1493729a9d6f97252a8d8bcd532d -JetBrainsMono-Light.woff2,1704176021125,5117442cda8e5a3cafaafbbdf6758ed37f7ce347798b4e537a2168ad0e3bd88f -SourceSans3VF-Upright.ttf.woff2,1704176021126,a5e8c4da5456f6b9675784affac017e8d160cf3983598e323352cfae09332c5e -assets/index-AxPC6F22.js,1704176021253,4579863da50676eca6a81f5634280deabf43506db41948b0ed6acd8863255747 +index.html,1704176534558,78dbd630820dbab73673c587c12b69f1fcab3a54b55b856404286d483dd14b19 +assets/index-QMTPcTcZ.css,1704176534558,ae20ab9e32f733d718e58156fdfe7e626402487f2b517c774b69b968a80c5fe7 +logo.png,1704176534434,a4f3d73a96357dc00ef4132fd3c12aafb62a1493729a9d6f97252a8d8bcd532d +JetBrainsMono-Light.woff2,1704176534432,5117442cda8e5a3cafaafbbdf6758ed37f7ce347798b4e537a2168ad0e3bd88f +SourceSans3VF-Upright.ttf.woff2,1704176534434,a5e8c4da5456f6b9675784affac017e8d160cf3983598e323352cfae09332c5e +assets/index-AxPC6F22.js,1704176534558,4579863da50676eca6a81f5634280deabf43506db41948b0ed6acd8863255747 diff --git a/firebase.json b/firebase.json index 2c33c29..1a13c99 100644 --- a/firebase.json +++ b/firebase.json @@ -1,11 +1,7 @@ { "hosting": { "public": "dist", - "ignore": [ - "firebase.json", - "**/.*", - "**/node_modules/**" - ], + "ignore": [], "rewrites": [ { "source": "**",