Compare commits

..

4 Commits

Author SHA1 Message Date
aead788292 Show timestamp 2023-11-09 13:42:40 -05:00
e639604ef6 Added timestamp to msg object 2023-11-07 16:19:48 -05:00
dfa0a6a7e8 Fix mismatched button margins 2023-11-07 12:59:07 -05:00
784dd60bef Fix Login saving old user state 2023-11-07 12:57:21 -05:00
6 changed files with 25 additions and 7 deletions

4
Cargo.lock generated
View File

@@ -242,7 +242,10 @@ checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38"
dependencies = [
"android-tzdata",
"iana-time-zone",
"js-sys",
"num-traits",
"serde",
"wasm-bindgen",
"windows-targets",
]
@@ -504,6 +507,7 @@ version = "1.3.58"
dependencies = [
"anyhow",
"bcrypt",
"chrono",
"futures-util",
"poem",
"poem-openapi",

View File

@@ -15,4 +15,5 @@ serde = "1.0.190"
thiserror = "1.0.50"
anyhow = "1.0.75"
serde_json = "1.0.108"
chrono = { version = "0.4.31", features = ["serde"] }

View File

@@ -52,8 +52,11 @@ onMounted(async () => {
</div>
-->
<div v-for="msg in msgs" class="d-flex text-body-secondary pt-2 px-3 border-bottom">
<p class="pb-2 mb-0 small lh-sm">
<p class="pb-2 mb-0 small lh-sm word-wrap">
<div class="d-flex justify-content-between">
<strong class="d-block text-gray-dark">{{ msg.username }}</strong>
<div>{{ msg.timestamp }}</div>
</div>
{{ msg.message }}
</p>
</div>
@@ -68,3 +71,10 @@ onMounted(async () => {
</main>
</template>
<style scoped>
.word-wrap {
word-break: break-all;
width: 100vw;
}
</style>

View File

@@ -2,7 +2,7 @@
import ThemeToggle from './ThemeToggle.vue'
const props = defineProps(['modelValue'])
defineEmits(['update:modelValue'])
const emit = defineEmits(['update:modelValue'])
async function signout(ev) {
ev.preventDefault()
@@ -16,6 +16,7 @@ async function signout(ev) {
}
let resp = await fetch(api_url, fetch_options)
console.log(resp)
emit('update:modelValue', '')
window.location.reload()
}
</script>
@@ -41,11 +42,10 @@ async function signout(ev) {
<div class="offcanvas-body px-2">
<ul class="navbar-nav justify-content-end flex-grow-1 pe-3">
<!--<li v-if="modelValue !== ''" class="nav-item mx-2 mt-2">-->
<li v-if="modelValue.hasOwnProperty('username')" class="nav-item mx-2 mt-2">
<li v-if="modelValue.hasOwnProperty('username')" class="nav-item m-2">
<button @click="signout" class="btn btn-outline-success">Sign out</button>
</li>
<li class="nav-item mf-3 mt-1">
<li class="nav-item m-2">
<div>
<ThemeToggle />
</div>

View File

@@ -22,7 +22,7 @@ async function login(ev) {
let resp = await fetch(api_url, fetch_options)
if (resp.ok) {
emit('update:modelValue', user.value)
emit('update:modelValue', await resp.json())
window.location.hash = "/"
} else {
user.value = ''

View File

@@ -1,3 +1,4 @@
use chrono::{offset::Utc, DateTime};
use futures_util::{SinkExt, StreamExt};
use poem::{
endpoint::StaticFilesEndpoint,
@@ -129,6 +130,7 @@ impl Api {
.send(ChatMsg {
username: name.clone(),
message: text,
timestamp: Utc::now(),
})
.is_err()
{
@@ -255,6 +257,7 @@ impl Api {
struct ChatMsg {
username: String,
message: String,
timestamp: DateTime<Utc>,
}
struct Api {