From a89f52c1ca3e708d2ee884c188e67ca129d2c06d Mon Sep 17 00:00:00 2001 From: quilin Date: Fri, 12 Dec 2025 01:01:14 +0100 Subject: [PATCH 01/10] [DM.Front] Refactoring, no more storeToRefs --- .../src/components/index.ts | 60 -------------- .../src/components/likes/DmLike.vue | 19 +++-- frontend/DM.Web.Modern.Temp/src/main.ts | 3 - .../DM.Web.Modern.Temp/src/stores/index.ts | 11 ++- .../src/views/layout/TheHeader.vue | 18 ++-- .../src/views/layout/header/PlayerActions.vue | 22 +++-- .../src/views/layout/menu/ForumsList.vue | 17 ++-- .../src/views/layout/sidebar/ActivePolls.vue | 14 ++-- .../src/views/pages/about/AboutPage.vue | 6 +- .../src/views/pages/about/ReviewList.vue | 11 ++- .../views/pages/community/CommunityPage.vue | 6 +- .../src/views/pages/community/UsersList.vue | 17 ++-- .../src/views/pages/forum/CreateTopic.vue | 6 +- .../src/views/pages/forum/ForumPage.vue | 31 +++---- .../src/views/pages/forum/TopicsList.vue | 23 +++--- .../src/views/pages/home/NewsList.vue | 10 +-- .../src/views/pages/home/RandomReview.vue | 6 +- .../src/views/pages/polls/PollsList.vue | 11 ++- .../src/views/pages/polls/PollsPage.vue | 14 ++-- .../src/views/pages/polls/ThePoll.vue | 15 ++-- .../src/views/pages/profile/ProfilePage.vue | 43 +++++----- .../src/views/pages/profile/ProfileStat.vue | 15 ++-- .../views/pages/profile/UserInformation.vue | 36 ++++---- .../src/views/pages/profile/UserSettings.vue | 15 ++-- .../src/views/pages/topic/CommentsList.vue | 23 +++--- .../src/views/pages/topic/CreateComment.vue | 4 +- .../src/views/pages/topic/TopicComment.vue | 45 ++++------ .../src/views/pages/topic/TopicPage.vue | 82 ++++++++++--------- 28 files changed, 261 insertions(+), 322 deletions(-) delete mode 100644 frontend/DM.Web.Modern.Temp/src/components/index.ts diff --git a/frontend/DM.Web.Modern.Temp/src/components/index.ts b/frontend/DM.Web.Modern.Temp/src/components/index.ts deleted file mode 100644 index 23cf921f..00000000 --- a/frontend/DM.Web.Modern.Temp/src/components/index.ts +++ /dev/null @@ -1,60 +0,0 @@ -import type { App } from "vue"; -import { IconType } from "@/components/ui-kit/iconType"; -import DmIcon from "@/components/ui-kit/DmIcon.vue"; -import PageTitle from "@/components/layout/PageTitle.vue"; -import BlockTitle from "@/components/layout/BlockTitle.vue"; -import SecondaryText from "@/components/layout/SecondaryText.vue"; -import HumanDate from "@/components/dates/HumanDate.vue"; -import HumanTimespan from "@/components/dates/HumanTimespan.vue"; -import UserLink from "@/components/community/UserLink.vue"; -import DmLoader from "@/components/ui-kit/DmLoader.vue"; -import DmInput from "@/components/ui-kit/DmInput.vue"; -import DmButton from "@/components/ui-kit/DmButton.vue"; -import DmText from "@/components/ui-kit/DmText.vue"; -import DmForm from "@/components/ui-kit/DmForm.vue"; -import DmDropdown from "@/components/ui-kit/DmDropdown.vue"; -import DmField from "@/components/ui-kit/DmField.vue"; -import DmDialog from "@/components/ui-kit/DmDialog.vue"; -import DmMenu from "@/components/ui-kit/DmMenu.vue"; -import UserOnline from "@/components/community/UserOnline.vue"; -import UserRating from "@/components/community/UserRating.vue"; -import UserIcon from "@/components/community/UserIcon.vue"; -import DmPaging from "@/components/ui-kit/DmPaging.vue"; -import DmIconButton from "@/components/ui-kit/DmIconButton.vue"; -import DmUpload from "@/components/ui-kit/DmUpload.vue"; -import DmProgress from "@/components/ui-kit/DmProgress.vue"; - -export default function (application: App) { - application.config.globalProperties.IconType = IconType; - - application - .component("DmIcon", DmIcon) - .component("DmLoader", DmLoader) - .component("DmDialog", DmDialog) - .component("DmPaging", DmPaging) - .component("DmMenu", DmMenu) - .component("DmProgress", DmProgress); - - application - .component("DmForm", DmForm) - .component("DmField", DmField) - .component("DmInput", DmInput) - .component("DmText", DmText) - .component("DmDropdown", DmDropdown) - .component("DmUpload", DmUpload) - .component("DmButton", DmButton) - .component("DmIconButton", DmIconButton); - - application - .component("PageTitle", PageTitle) - .component("BlockTitle", BlockTitle) - .component("SecondaryText", SecondaryText) - .component("HumanDate", HumanDate) - .component("HumanTimespan", HumanTimespan); - - application - .component("UserLink", UserLink) - .component("UserOnline", UserOnline) - .component("UserRating", UserRating) - .component("UserIcon", UserIcon); -} diff --git a/frontend/DM.Web.Modern.Temp/src/components/likes/DmLike.vue b/frontend/DM.Web.Modern.Temp/src/components/likes/DmLike.vue index d3b2308c..9e6afccf 100644 --- a/frontend/DM.Web.Modern.Temp/src/components/likes/DmLike.vue +++ b/frontend/DM.Web.Modern.Temp/src/components/likes/DmLike.vue @@ -3,30 +3,31 @@ import { IconType } from "@/components/ui-kit/iconType"; import { computed } from "vue"; import type { Served } from "@/api/models"; import type { User } from "@/api/models/community"; -import DmIconButton from "@/components/ui-kit/DmIconButton.vue"; -import DmIcon from "@/components/ui-kit/DmIcon.vue"; +import { useUserStore } from "@/stores"; interface Likeable { likes: Served; author: Served; } -const props = defineProps<{ - entity: Likeable; - user: User | null; -}>(); +const props = defineProps<{ entity: Likeable }>(); const emit = defineEmits(["liked", "unliked"]); +const userStore = useUserStore(); + const canInteract = computed( - () => !!props.user && props.user.login !== props.entity.author.login, + () => + userStore.user !== null && + userStore.user.login !== props.entity.author.login, ); const userLiked = computed(() => - props.entity.likes.some((liker) => liker.login === props.user?.login), + props.entity.likes.some((liker) => liker.login === userStore.user?.login), );