merging
This commit is contained in:
commit
81662942a2
24 changed files with 506 additions and 402 deletions
96
src/App.vue
96
src/App.vue
|
|
@ -1,5 +1,6 @@
|
|||
<template>
|
||||
<div id="app" v-if="(windowReady && sessionReady)">
|
||||
<!-- Only render when profile has been set -->
|
||||
<div id="app" v-if="(ready)">
|
||||
|
||||
<button id="titlebar" />
|
||||
|
||||
|
|
@ -7,21 +8,25 @@
|
|||
<span class="menu">
|
||||
<button
|
||||
class="menuButton exitButton"
|
||||
@click.prevent="callNavbar('close')"
|
||||
@click.prevent="post('nav-bar', 'close')"
|
||||
/>
|
||||
<button
|
||||
class="menuButton minimizeButton"
|
||||
@click.prevent="callNavbar('min')"
|
||||
@click.prevent="post('nav-bar', 'min')"
|
||||
/>
|
||||
</span>
|
||||
|
||||
<!-- Main Pages -->
|
||||
<Messenger v-if="auth"/>
|
||||
<Messenger
|
||||
v-if="profile"
|
||||
:profile="profile"
|
||||
:newMessages="newMessages"
|
||||
/>
|
||||
<Login v-else />
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Show spash screen if not ready -->
|
||||
<!-- Show spash screen if ready is false -->
|
||||
<Splash v-else />
|
||||
|
||||
</template>
|
||||
|
|
@ -29,7 +34,6 @@
|
|||
<script lang="ts">
|
||||
import { defineComponent, onMounted, onUnmounted, ref } from "vue";
|
||||
import { IpcRendererEvent } from "electron";
|
||||
import { authRequest } from '@/modules/message';
|
||||
import { useIpc } from "@/modules/ipc";
|
||||
|
||||
import Splash from "@/components/splash.vue";
|
||||
|
|
@ -44,74 +48,52 @@ export default defineComponent({
|
|||
},
|
||||
|
||||
setup() {
|
||||
const { post, invoke } = useIpc();
|
||||
const { post } = useIpc();
|
||||
|
||||
const auth = ref(false);
|
||||
const windowReady = ref(false);
|
||||
const sessionReady = ref(false);
|
||||
// Whether browser has received user info yet.
|
||||
const ready = ref(false);
|
||||
|
||||
// When connection is established, we send key over.
|
||||
const onOpen = (_event: IpcRendererEvent, payload: any) => {
|
||||
console.log(`Connected to Crimata.`)
|
||||
const key = window.localStorage.getItem("key");
|
||||
// Information about current user.
|
||||
const profile = ref(false);
|
||||
|
||||
if (key) {
|
||||
console.log(`Sending key: ${key}`)
|
||||
post("client-message", authRequest(key, false, false))
|
||||
}
|
||||
// New messages that browser missed while closed.
|
||||
const newMessages = ref([])
|
||||
|
||||
else {
|
||||
console.log("No key, session ready.")
|
||||
sessionReady.value = true
|
||||
// Receive updated information about the session.
|
||||
const updateState = (_event: IpcRendererEvent, payload: any) => {
|
||||
console.log("APP:Received updated profile and new messages: \n" +
|
||||
` profile: ${payload.message.profile}\n` +
|
||||
` new: ${payload.message.newMessages}`)
|
||||
|
||||
if (payload.message.profile) {
|
||||
console.log(`APP:Logged-in, showing Messenger View.`)
|
||||
} else {
|
||||
console.log(`APP:Logged-out, showing Login View.`)
|
||||
}
|
||||
|
||||
}
|
||||
// Set profile and newMessages.
|
||||
profile.value = payload.message.profile;
|
||||
newMessages.value = payload.message.newMessages;
|
||||
|
||||
// Update authenticate state on auth message from server.
|
||||
const onAuthResponse = (_event: IpcRendererEvent, payload: any) => {
|
||||
const key = payload.message.key
|
||||
const usr = payload.message.usr
|
||||
console.log(`Received auth response: ${usr}, ${key}`)
|
||||
ready.value = true;
|
||||
|
||||
if (key) {
|
||||
console.log(`Auth success, saving key: ${key}.`)
|
||||
window.localStorage.setItem("key", payload.message.key)
|
||||
auth.value = true;
|
||||
}
|
||||
|
||||
else {
|
||||
console.log(`Auth failed, clearing local storage.`)
|
||||
window.localStorage.clear()
|
||||
auth.value = false;
|
||||
}
|
||||
|
||||
console.log("Session is ready.")
|
||||
sessionReady.value = true
|
||||
|
||||
}
|
||||
|
||||
// Post navbar action to backend.
|
||||
const callNavbar = (action: string) => {
|
||||
invoke("nav-bar", action);
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
window.ipcRenderer.on("on-connect", onOpen)
|
||||
window.ipcRenderer.on("auth-response", onAuthResponse)
|
||||
window.ipcRenderer.on("window-ready", () => windowReady.value = true);
|
||||
console.log("APP:mounted.")
|
||||
window.ipcRenderer.on("update-state", updateState)
|
||||
post("app-mounted", "")
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
window.ipcRenderer.removeAllListeners("on-connect")
|
||||
window.ipcRenderer.removeAllListeners("window-ready")
|
||||
window.ipcRenderer.removeAllListeners("auth-response")
|
||||
window.ipcRenderer.removeAllListeners("update-state")
|
||||
})
|
||||
|
||||
return {
|
||||
callNavbar,
|
||||
sessionReady,
|
||||
windowReady,
|
||||
auth
|
||||
ready,
|
||||
profile,
|
||||
post,
|
||||
newMessages
|
||||
}
|
||||
}
|
||||
})
|
||||
|
|
|
|||
Loading…
Reference in a new issue