Track HiveGrid Cloud planning reference
This commit is contained in:
1 parent
b3d5ea6764
commit
e341c5938a
5784 files changed
+1104929
-3
No files matched your search
@@ -0,0 +1,97 @@
|
||||
import { ActionFunctionArgs, LoaderFunctionArgs, redirect } from "react-router";
|
||||
import { MetaTagsDto } from "~/application/dtos/seo/MetaTagsDto";
|
||||
import { getUserInfo } from "~/utils/session.server";
|
||||
import { createKnowledgeBaseArticleView, getArticleStateByUserAnalyticsId, voteArticle } from "../../db/kbAnalytics.db.server";
|
||||
import { KbArticleDto } from "../../dtos/KbArticleDto";
|
||||
import { KbCategoryDto } from "../../dtos/KbCategoryDto";
|
||||
import { KnowledgeBaseDto } from "../../dtos/KnowledgeBaseDto";
|
||||
import KnowledgeBaseService from "../../service/KnowledgeBaseService.server";
|
||||
import KnowledgeBaseUtils from "../../utils/KnowledgeBaseUtils";
|
||||
import { KbSearchResultDto } from "../../dtos/KbSearchResultDto";
|
||||
import { getUser } from "~/utils/db/users.db.server";
|
||||
import { getAnalyticsInfo } from "~/utils/analyticsCookie.server";
|
||||
import { getTranslations } from "~/locale/i18next.server";
|
||||
|
||||
export namespace KbRoutesArticleApi {
|
||||
export type LoaderData = {
|
||||
metatags?: MetaTagsDto;
|
||||
kb: KnowledgeBaseDto;
|
||||
search: KbSearchResultDto | undefined;
|
||||
item: {
|
||||
article: KbArticleDto;
|
||||
category: KbCategoryDto;
|
||||
} | null;
|
||||
userState: {
|
||||
hasThumbsUp: boolean;
|
||||
hasThumbsDown: boolean;
|
||||
};
|
||||
isAdmin: boolean;
|
||||
categories: KbCategoryDto[];
|
||||
};
|
||||
export const loader = async ({ request, params }: LoaderFunctionArgs, { kbSlug }: { kbSlug?: string } = {}) => {
|
||||
const analyticsInfo = await getAnalyticsInfo(request);
|
||||
const userInfo = await getUserInfo(request);
|
||||
const kb = await KnowledgeBaseService.get({ slug: kbSlug ?? params.slug!, enabled: true, request });
|
||||
const item = await KnowledgeBaseService.getArticle({
|
||||
kb,
|
||||
slug: params.article ?? "",
|
||||
params,
|
||||
request,
|
||||
});
|
||||
if (!item) {
|
||||
throw redirect(KnowledgeBaseUtils.getKbUrl({ kb, params }));
|
||||
}
|
||||
|
||||
if (item?.article) {
|
||||
createKnowledgeBaseArticleView({ userAnalyticsId: analyticsInfo.userAnalyticsId, articleId: item.article.id });
|
||||
}
|
||||
let userState = await getArticleStateByUserAnalyticsId({
|
||||
userAnalyticsId: analyticsInfo.userAnalyticsId,
|
||||
articleId: item?.article.id ?? "",
|
||||
});
|
||||
const searchParams = new URL(request.url).searchParams;
|
||||
const query = searchParams.get("q")?.toString();
|
||||
const currentUser = await getUser(userInfo.userId);
|
||||
KnowledgeBaseUtils.fixDarkMode({ article: item.article });
|
||||
const data: LoaderData = {
|
||||
metatags: item?.article.metatags,
|
||||
kb,
|
||||
search: await KnowledgeBaseService.search({ query, kb, params, request }),
|
||||
item,
|
||||
userState,
|
||||
isAdmin: !!currentUser?.admin,
|
||||
categories: await KnowledgeBaseService.getCategories({
|
||||
kb,
|
||||
params,
|
||||
request,
|
||||
}),
|
||||
};
|
||||
return data;
|
||||
};
|
||||
|
||||
export const action = async ({ request, params }: ActionFunctionArgs, { kbSlug }: { kbSlug?: string } = {}) => {
|
||||
const { t } = await getTranslations(request);
|
||||
const { userAnalyticsId } = await getAnalyticsInfo(request);
|
||||
const form = await request.formData();
|
||||
const action = form.get("action") as string;
|
||||
const kb = await KnowledgeBaseService.get({ slug: kbSlug ?? params.slug!, enabled: true, request });
|
||||
const item = await KnowledgeBaseService.getArticle({
|
||||
kb,
|
||||
slug: params.article ?? "",
|
||||
params,
|
||||
request,
|
||||
});
|
||||
if (!item) {
|
||||
return Response.json({ error: t("knowledgeBase.public.errors.articleNotFound") }, { status: 404 });
|
||||
}
|
||||
if (action === "thumbsUp") {
|
||||
await voteArticle({ userAnalyticsId, articleId: item.article.id, type: "up" });
|
||||
return Response.json({ success: true });
|
||||
} else if (action === "thumbsDown") {
|
||||
await voteArticle({ userAnalyticsId, articleId: item.article.id, type: "down" });
|
||||
return Response.json({ success: true });
|
||||
}
|
||||
|
||||
return Response.json({ error: t("knowledgeBase.public.errors.invalidAction") }, { status: 400 });
|
||||
};
|
||||
}
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
import { LoaderFunctionArgs, redirect } from "react-router";
|
||||
import { MetaTagsDto } from "~/application/dtos/seo/MetaTagsDto";
|
||||
import { KbCategoryDto } from "../../dtos/KbCategoryDto";
|
||||
import { KnowledgeBaseDto } from "../../dtos/KnowledgeBaseDto";
|
||||
import KnowledgeBaseService from "../../service/KnowledgeBaseService.server";
|
||||
import KnowledgeBaseUtils from "../../utils/KnowledgeBaseUtils";
|
||||
import { KbSearchResultDto } from "../../dtos/KbSearchResultDto";
|
||||
|
||||
export namespace KbRoutesCategoryApi {
|
||||
export type LoaderData = {
|
||||
metatags?: MetaTagsDto;
|
||||
kb: KnowledgeBaseDto;
|
||||
search: KbSearchResultDto | undefined;
|
||||
item: KbCategoryDto | null;
|
||||
language: string;
|
||||
allCategories: KbCategoryDto[];
|
||||
};
|
||||
export const loader = async ({ request, params }: LoaderFunctionArgs, { kbSlug }: { kbSlug?: string } = {}) => {
|
||||
const kb = await KnowledgeBaseService.get({ slug: kbSlug ?? params.slug!, enabled: true, request });
|
||||
const language = params.lang ?? kb.defaultLanguage;
|
||||
|
||||
const item = await KnowledgeBaseService.getCategory({
|
||||
kb,
|
||||
category: params.category ?? "",
|
||||
language,
|
||||
params,
|
||||
request,
|
||||
});
|
||||
if (!item) {
|
||||
throw redirect(KnowledgeBaseUtils.getKbUrl({ kb, params }));
|
||||
}
|
||||
const searchParams = new URL(request.url).searchParams;
|
||||
const query = searchParams.get("q")?.toString();
|
||||
const data: LoaderData = {
|
||||
metatags: item?.metatags,
|
||||
kb,
|
||||
search: await KnowledgeBaseService.search({ query, kb, params, request }),
|
||||
item,
|
||||
allCategories: await KnowledgeBaseService.getCategories({
|
||||
kb,
|
||||
params,
|
||||
request,
|
||||
}),
|
||||
language,
|
||||
};
|
||||
return data;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
import { LoaderFunctionArgs } from "react-router";
|
||||
import { MetaTagsDto } from "~/application/dtos/seo/MetaTagsDto";
|
||||
import { createKnowledgeBaseView } from "../../db/kbAnalytics.db.server";
|
||||
import { KbArticleDto } from "../../dtos/KbArticleDto";
|
||||
import { KbCategoryDto } from "../../dtos/KbCategoryDto";
|
||||
import { KnowledgeBaseDto } from "../../dtos/KnowledgeBaseDto";
|
||||
import KnowledgeBaseService from "../../service/KnowledgeBaseService.server";
|
||||
import { KbSearchResultDto } from "../../dtos/KbSearchResultDto";
|
||||
import KnowledgeBaseUtils from "../../utils/KnowledgeBaseUtils";
|
||||
import { getAnalyticsInfo } from "~/utils/analyticsCookie.server";
|
||||
import { getUserInfo } from "~/utils/session.server";
|
||||
import { getUser } from "~/utils/db/users.db.server";
|
||||
|
||||
export namespace KbRoutesIndexApi {
|
||||
export type LoaderData = {
|
||||
metatags: MetaTagsDto;
|
||||
kb: KnowledgeBaseDto;
|
||||
search: KbSearchResultDto | undefined;
|
||||
categories: KbCategoryDto[];
|
||||
featured: KbArticleDto[];
|
||||
isAdmin: boolean;
|
||||
};
|
||||
export const loader = async ({ request, params }: LoaderFunctionArgs, { kbSlug }: { kbSlug?: string } = {}) => {
|
||||
if (params.lang && !KnowledgeBaseUtils.supportedLanguages.find((f) => f.value === params.lang)) {
|
||||
throw Response.json({}, { status: 404 });
|
||||
}
|
||||
const kb = await KnowledgeBaseService.get({ slug: kbSlug ?? params.slug!, enabled: true, request });
|
||||
|
||||
const { userAnalyticsId } = await getAnalyticsInfo(request);
|
||||
const userInfo = await getUserInfo(request);
|
||||
|
||||
await createKnowledgeBaseView({ userAnalyticsId, knowledgeBaseId: kb.id });
|
||||
const searchParams = new URL(request.url).searchParams;
|
||||
const query = searchParams.get("q")?.toString();
|
||||
const currentUser = await getUser(userInfo.userId);
|
||||
const data: LoaderData = {
|
||||
metatags: kb.metatags,
|
||||
kb,
|
||||
search: await KnowledgeBaseService.search({ query, kb, params, request }),
|
||||
categories: await KnowledgeBaseService.getCategories({
|
||||
kb,
|
||||
params,
|
||||
request,
|
||||
}),
|
||||
featured: await KnowledgeBaseService.getFeaturedArticles({
|
||||
kb,
|
||||
params,
|
||||
request,
|
||||
}),
|
||||
isAdmin: !!currentUser?.admin,
|
||||
// searchResult,
|
||||
};
|
||||
return data;
|
||||
};
|
||||
}
|
||||
Reference in new issue
Block a user