From 6e8e3bf1f476fc18853e8418735a23edf66c4d39 Mon Sep 17 00:00:00 2001 From: grimhilt Date: Wed, 26 Apr 2023 17:40:07 +0200 Subject: [PATCH] fix svg errors on display and add flagged --- .../components/structure/message/Composer.vue | 11 ++- .../components/structure/message/Options.vue | 93 ++++++++++++------- front/src/components/utils/SvgLoader.vue | 18 +++- front/src/utils/flagsUtils.ts | 10 ++ 4 files changed, 91 insertions(+), 41 deletions(-) diff --git a/front/src/components/structure/message/Composer.vue b/front/src/components/structure/message/Composer.vue index 6b3e2cf..34de7a3 100644 --- a/front/src/components/structure/message/Composer.vue +++ b/front/src/components/structure/message/Composer.vue @@ -225,7 +225,11 @@ function sendMessage() { :class="[{ 'is-active': editor.isActive('bold') }, 'editorOption']" /> --> - + -import { defineProps, inject, PropType, ref } from "vue"; +import { defineProps, inject, PropType, Ref, ref } from "vue"; import { Message } from "@/store/models/model"; import API from "@/services/imapAPI"; import store from "@/store/store"; -import { isSeenFc } from "@/utils/flagsUtils"; +import { isSeenFc, hasFlag } from "@/utils/flagsUtils"; import SvgLoader from "@/components/utils/SvgLoader.vue"; const props = defineProps({ @@ -11,65 +11,88 @@ const props = defineProps({ }); const room: any = inject("room"); -const readLoading = ref(false); -const setFlag = (flag: string) => { - if (readLoading.value) return; - readLoading.value = true; +const seenLoading = ref(false); +const flaggedLoading = ref(false); + +const setReadFlag = () => setFlag("\\Seen", seenLoading); +const setFlaggedFlag = () => setFlag("\\Flagged", flaggedLoading); + +const setFlag = (flag: string, loadingState: Ref) => { + if (loadingState.value) return; if (!room?.value || !props.msg) return; - let apiCall = isSeenFc(props.msg?.flags) ? API.removeFlag : API.addFlag; + loadingState.value = true; + + let apiCall = hasFlag(props.msg?.flags, flag) ? API.removeFlag : API.addFlag; apiCall({ mailboxId: room.value?.mailboxId, messageId: props.msg?.id, flag: flag, }) - .then((res) => { - if (isSeenFc(props.msg?.flags)) { + .then(() => { + if (hasFlag(props.msg?.flags, flag)) { store.commit("removeFlag", { roomId: room.value?.id, messageId: props.msg?.id, flag: flag }); } else { store.commit("addFlag", { roomId: room.value?.id, messageId: props.msg?.id, flag: flag }); } - readLoading.value = false; + loadingState.value = false; }) .catch((err) => { console.log(err); - readLoading.value = false; + loadingState.value = false; }); }; + diff --git a/front/src/components/utils/SvgLoader.vue b/front/src/components/utils/SvgLoader.vue index e1e5bde..22b2062 100644 --- a/front/src/components/utils/SvgLoader.vue +++ b/front/src/components/utils/SvgLoader.vue @@ -6,6 +6,11 @@ const props = defineProps({ isDisabled: Boolean, classes: String, loading: { type: Boolean, default: false }, + color: { + type: String, + default: `brightness(0) saturate(100%) invert(100%) sepia(4%) saturate(1934%) hue-rotate(130deg) + brightness(114%) contrast(100%)`, + }, }); console.log(props.loading); @@ -15,22 +20,27 @@ const pathSvg = () => require(`@/assets/svg/${props.svg}.svg`);