mirror of
https://github.com/saicaca/fuwari.git
synced 2026-01-13 15:52:53 +01:00
refactor: improve type safety (#155)
* Fix to make it type safe. * The build is failing, fix it.
This commit is contained in:
committed by
GitHub
parent
f79ee3482d
commit
e9c8930559
@@ -1,16 +1,22 @@
|
||||
import { getCollection } from 'astro:content'
|
||||
import type { BlogPostData } from '@/types/config'
|
||||
import I18nKey from '@i18n/i18nKey'
|
||||
import { i18n } from '@i18n/translation'
|
||||
import { getCollection } from 'astro:content'
|
||||
|
||||
export async function getSortedPosts() {
|
||||
const allBlogPosts = await getCollection('posts', ({ data }) => {
|
||||
export async function getSortedPosts(): Promise<
|
||||
{ data: BlogPostData; slug: string }[]
|
||||
> {
|
||||
const allBlogPosts = (await getCollection('posts', ({ data }) => {
|
||||
return import.meta.env.PROD ? data.draft !== true : true
|
||||
})
|
||||
const sorted = allBlogPosts.sort((a, b) => {
|
||||
const dateA = new Date(a.data.published)
|
||||
const dateB = new Date(b.data.published)
|
||||
return dateA > dateB ? -1 : 1
|
||||
})
|
||||
})) as unknown as { data: BlogPostData; slug: string }[]
|
||||
|
||||
const sorted = allBlogPosts.sort(
|
||||
(a: { data: { published: Date } }, b: { data: { published: Date } }) => {
|
||||
const dateA = new Date(a.data.published)
|
||||
const dateB = new Date(b.data.published)
|
||||
return dateA > dateB ? -1 : 1
|
||||
},
|
||||
)
|
||||
|
||||
for (let i = 1; i < sorted.length; i++) {
|
||||
sorted[i].data.nextSlug = sorted[i - 1].slug
|
||||
@@ -30,12 +36,12 @@ export type Tag = {
|
||||
}
|
||||
|
||||
export async function getTagList(): Promise<Tag[]> {
|
||||
const allBlogPosts = await getCollection('posts', ({ data }) => {
|
||||
const allBlogPosts = await getCollection<'posts'>('posts', ({ data }) => {
|
||||
return import.meta.env.PROD ? data.draft !== true : true
|
||||
})
|
||||
|
||||
const countMap: { [key: string]: number } = {}
|
||||
allBlogPosts.map(post => {
|
||||
allBlogPosts.map((post: { data: { tags: string[] } }) => {
|
||||
post.data.tags.map((tag: string) => {
|
||||
if (!countMap[tag]) countMap[tag] = 0
|
||||
countMap[tag]++
|
||||
@@ -56,11 +62,11 @@ export type Category = {
|
||||
}
|
||||
|
||||
export async function getCategoryList(): Promise<Category[]> {
|
||||
const allBlogPosts = await getCollection('posts', ({ data }) => {
|
||||
const allBlogPosts = await getCollection<'posts'>('posts', ({ data }) => {
|
||||
return import.meta.env.PROD ? data.draft !== true : true
|
||||
})
|
||||
const count: { [key: string]: number } = {}
|
||||
allBlogPosts.map(post => {
|
||||
allBlogPosts.map((post: { data: { category: string | number } }) => {
|
||||
if (!post.data.category) {
|
||||
const ucKey = i18n(I18nKey.uncategorized)
|
||||
count[ucKey] = count[ucKey] ? count[ucKey] + 1 : 1
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
import type { LIGHT_DARK_MODE } from '@/types/config'
|
||||
import {
|
||||
AUTO_MODE,
|
||||
DARK_MODE,
|
||||
DEFAULT_THEME,
|
||||
LIGHT_MODE,
|
||||
} from '@constants/constants.ts'
|
||||
import type { LIGHT_DARK_MODE } from '@/types/config'
|
||||
|
||||
export function getDefaultHue(): number {
|
||||
const fallback = '250'
|
||||
const configCarrier = document.getElementById('config-carrier')
|
||||
return parseInt(configCarrier?.dataset.hue || fallback)
|
||||
return Number.parseInt(configCarrier?.dataset.hue || fallback)
|
||||
}
|
||||
|
||||
export function getHue(): number {
|
||||
const stored = localStorage.getItem('hue')
|
||||
return stored ? parseInt(stored) : getDefaultHue()
|
||||
return stored ? Number.parseInt(stored) : getDefaultHue()
|
||||
}
|
||||
|
||||
export function setHue(hue: number): void {
|
||||
|
||||
Reference in New Issue
Block a user