perf(utils): 目录结构

feature/artists
mackt 5 months ago
parent 1be94c67c1
commit f5553435b8

@ -11,7 +11,7 @@
"rsc": false, "rsc": false,
"tsx": true, "tsx": true,
"aliases": { "aliases": {
"utils": "/src/lib/utils", "utils": "/src/utils/ui",
"components": "/src/components", "components": "/src/components",
"ui": "/src/components/ui" "ui": "/src/components/ui"
} }

@ -4,11 +4,10 @@
import Image from 'next/image'; import Image from 'next/image';
import { secondToDate } from '@/utils/time';
import styles from './index.module.css'; import styles from './index.module.css';
import { PlayerButton, CollectButton } from '@/components'; import { PlayerButton, CollectButton } from '@/components';
import { secondToDate } from '@/utils';
interface Props { interface Props {
audio: SongInfo | null; audio: SongInfo | null;

@ -8,9 +8,8 @@ import { useShallow } from 'zustand/react/shallow';
import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'; import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar';
import logout from '@/utils/logout';
import useUserStore from '@/store/user'; import useUserStore from '@/store/user';
import { logout } from '@/utils';
interface Props { interface Props {
className?: string; className?: string;

@ -6,12 +6,10 @@ import { debounce } from 'lodash';
import { useRouter } from 'next/navigation'; import { useRouter } from 'next/navigation';
import { useShallow } from 'zustand/react/shallow'; import { useShallow } from 'zustand/react/shallow';
import { useLoginRedirect } from '@/utils/login';
import { Button } from '@/components'; import { Button } from '@/components';
import { setAccessToken } from '@/lib/cache';
import { apiSendSMS, apiUserLogin } from '@/services'; import { apiSendSMS, apiUserLogin } from '@/services';
import useUserStore from '@/store/user'; import useUserStore from '@/store/user';
import { useLoginRedirect, setAccessToken } from '@/utils';
export default function LoginForm({ className }: { className?: string }) { export default function LoginForm({ className }: { className?: string }) {
const redirect = useLoginRedirect(); const redirect = useLoginRedirect();

@ -1,7 +1,7 @@
import * as React from 'react'; import * as React from 'react';
import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog'; import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
import { cn } from '@/lib/utils'; import { cn } from '@/utils';
import { buttonVariants } from '@/components/ui/button'; import { buttonVariants } from '@/components/ui/button';
const AlertDialog = AlertDialogPrimitive.Root; const AlertDialog = AlertDialogPrimitive.Root;

@ -2,7 +2,7 @@ import * as React from 'react';
import * as AvatarPrimitive from '@radix-ui/react-avatar'; import * as AvatarPrimitive from '@radix-ui/react-avatar';
import { cn } from '@/lib/utils'; import { cn } from '@/utils';
const Avatar = React.forwardRef< const Avatar = React.forwardRef<
React.ElementRef<typeof AvatarPrimitive.Root>, React.ElementRef<typeof AvatarPrimitive.Root>,

@ -4,7 +4,7 @@ import * as React from 'react';
import { Slot } from '@radix-ui/react-slot'; import { Slot } from '@radix-ui/react-slot';
import { cva, type VariantProps } from 'class-variance-authority'; import { cva, type VariantProps } from 'class-variance-authority';
import { cn } from '@/lib/utils'; import { cn } from '@/utils';
const buttonVariants = cva( const buttonVariants = cva(
'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50', 'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',

@ -2,7 +2,7 @@ import * as React from 'react';
import * as DialogPrimitive from '@radix-ui/react-dialog'; import * as DialogPrimitive from '@radix-ui/react-dialog';
import { X } from 'lucide-react'; import { X } from 'lucide-react';
import { cn } from '@/lib/utils'; import { cn } from '@/utils';
const Dialog = DialogPrimitive.Root; const Dialog = DialogPrimitive.Root;

@ -2,7 +2,7 @@ import * as React from 'react';
import * as HoverCardPrimitive from '@radix-ui/react-hover-card'; import * as HoverCardPrimitive from '@radix-ui/react-hover-card';
import { cn } from '@/lib/utils'; import { cn } from '@/utils';
const HoverCard = HoverCardPrimitive.Root; const HoverCard = HoverCardPrimitive.Root;

@ -1,7 +1,7 @@
import * as React from 'react'; import * as React from 'react';
import * as PopoverPrimitive from '@radix-ui/react-popover'; import * as PopoverPrimitive from '@radix-ui/react-popover';
import { cn } from '@/lib/utils'; import { cn } from '@/utils';
const Popover = PopoverPrimitive.Root; const Popover = PopoverPrimitive.Root;

@ -3,7 +3,7 @@ import * as ToastPrimitives from '@radix-ui/react-toast';
import { cva, type VariantProps } from 'class-variance-authority'; import { cva, type VariantProps } from 'class-variance-authority';
import { X } from 'lucide-react'; import { X } from 'lucide-react';
import styles from './index.module.css'; import styles from './index.module.css';
import { cn } from '@/lib/utils'; import { cn } from '@/utils';
const ToastProvider = ToastPrimitives.Provider; const ToastProvider = ToastPrimitives.Provider;

@ -1,8 +0,0 @@
import { setCookie } from 'nookies';
export function setAccessToken(token: string) {
setCookie(null, 'token', token, {
maxAge: 7 * 24 * 60 * 60,
path: '/',
});
}

@ -75,21 +75,6 @@ const useUserStore = create<UserState>()(
), ),
setUserInfo, setUserInfo,
// userLogin: async (params) => { // userLogin: async (params) => {
// const result = { code: 200, data: '1', message: '登录成功' };
// if (result.code === 200) {
// setCookie(
// null,
// 'token',
// 'Bearer eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIxNzc5MDMxOTU1MzUwODg0MzUyIiwic3ViIjoi6ZuA5LmQLVQ5WkhteGkxVSIsImlhdCI6MTcxMzMzNTY1MCwiYXZhdGFyIjoidXNlci9hdmF0YXIvZGVmYXVsdC5wbmciLCJyb2xlcyI6InVzZXIiLCJleHAiOjE3MTM5NDA0NTB9.YtNph3J4XPyADfFAgCpUvh5VE4RgSRC0FH1ZDcNtPhU',
// {
// maxAge: 7 * 24 * 60 * 60,
// path: '/',
// },
// );
// await getUserInfo();
// }
// return result;
// // const result = await apiUserLogin(params); // // const result = await apiUserLogin(params);
// // if (result.code === 200) { // // if (result.code === 200) {
// // setCookie(null, 'token', result.data, { // // setCookie(null, 'token', result.data, {

@ -0,0 +1,12 @@
import { setCookie, destroyCookie } from 'nookies';
export function setAccessToken(token: string) {
setCookie(null, 'token', token, {
maxAge: 7 * 24 * 60 * 60,
path: '/',
});
}
export function clearAccessToken() {
destroyCookie(null, 'token', { path: '/' });
}

@ -1,21 +0,0 @@
/**
*
*/
import React from 'react';
export interface IMyContextProps {
/** 是否登录标记 */
isLoggedIn: boolean;
/** 用户信息 */
user: UserInfo | null; // 用户信息
/** useState 创建的函数 用于设置用户信息 */
setUser?: any;
}
const MyContext = React.createContext<IMyContextProps>({
isLoggedIn: false,
user: null,
});
export default MyContext;

@ -1,2 +1,6 @@
export * from './cache';
export * from './helpers'; export * from './helpers';
export * from './wrapper'; export * from './login';
export * from './time';
export * from './ua';
export * from './ui';

@ -1,8 +1,15 @@
import { useSearchParams } from 'next/navigation'; import { useSearchParams } from 'next/navigation';
import { clearAccessToken } from '@/utils';
export const useLoginRedirect = () => { export const useLoginRedirect = () => {
const searchParams = useSearchParams(); const searchParams = useSearchParams();
const redirect = searchParams.get('redirect'); const redirect = searchParams.get('redirect');
if (!redirect) return '/'; if (!redirect) return '/';
return redirect; return redirect;
}; };
export const logout = () => {
clearAccessToken();
localStorage.clear();
};

@ -1,8 +0,0 @@
import { destroyCookie } from 'nookies';
const logout = () => {
destroyCookie(null, 'token', { path: '/' });
localStorage.clear();
};
export default logout;

@ -7,12 +7,9 @@ import qs from 'qs';
import { openLogin } from '@/components/Login/loginContext'; import { openLogin } from '@/components/Login/loginContext';
import { toast } from '@/components/ui/use-toast'; import { toast } from '@/components/ui/use-toast';
import logout from '@/utils/logout';
import { IQueryParams, IResponse } from '@/utils/request/type'; import { IQueryParams, IResponse } from '@/utils/request/type';
// import { apiAutoLogin } from '@/services'; import { logout } from '@/utils';
// import jwtDecode from 'jwt-decode';
const defaultHost = process.env.NEXT_PUBLIC_HOST; const defaultHost = process.env.NEXT_PUBLIC_HOST;
const aiHost = process.env.NEXT_PUBLIC_AI_HOST; const aiHost = process.env.NEXT_PUBLIC_AI_HOST;

@ -1,3 +1,4 @@
// 格式化歌词时间
export const secondToDate: (v: number) => string = (second) => { export const secondToDate: (v: number) => string = (second) => {
const hourNum = Math.floor(second / 3600); const hourNum = Math.floor(second / 3600);
const minuteNum = Math.floor((second / 60) % 60); const minuteNum = Math.floor((second / 60) % 60);
@ -9,7 +10,7 @@ export const secondToDate: (v: number) => string = (second) => {
return `${h}${m}${s}`; return `${h}${m}${s}`;
}; };
// 格式化个位数 // 格式化个位数到两位数
const unitAddZero: (v: number) => string = (v) => { export const unitAddZero: (v: number) => string = (v) => {
return v < 10 ? `0${v}` : `${v}`; return v < 10 ? `0${v}` : `${v}`;
}; };

@ -1,18 +0,0 @@
export const headerContentType = {
form: {
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
},
json: {
headers: { 'Content-Type': 'application/json; charset=utf-8' },
},
};
export const createFormBody: (formDataObject: any) => string = (formDataObject: any) => {
const encodedForm = new URLSearchParams();
for (const key in formDataObject) {
if (formDataObject.hasOwnProperty(key)) {
encodedForm.append(key, formDataObject[key]);
}
}
return encodedForm.toString();
};

@ -1,7 +1,7 @@
import { defineConfig, presetUno, presetAttributify, presetIcons } from 'unocss'; import { defineConfig, presetUno, presetAttributify, presetIcons } from 'unocss';
// import { colors } from 'unocss/preset-mini';
import presetAnimations from 'unocss-preset-animations'; import presetAnimations from 'unocss-preset-animations';
import { presetShadcn } from 'unocss-preset-shadcn'; import { presetShadcn } from 'unocss-preset-shadcn';
import { colors } from 'unocss/preset-mini';
export default defineConfig({ export default defineConfig({
presets: [ presets: [

Loading…
Cancel
Save