fix: мобильные кнопки Settings/Logout в header + дедупликация api.ts

This commit is contained in:
Markov 2026-02-24 23:27:58 +01:00
parent 1b93bd60c0
commit 8df4179dd7
2 changed files with 18 additions and 22 deletions

View File

@ -115,14 +115,6 @@ export interface Task {
steps: Step[]; steps: Step[];
} }
export interface ProjectMember {
id: string;
name: string;
slug: string;
type: "human" | "agent";
role: "owner" | "member";
}
export interface Attachment { export interface Attachment {
id: string; id: string;
filename: string; filename: string;
@ -312,19 +304,6 @@ export async function getProjectMembers(slug: string): Promise<ProjectMember[]>
return request(`/api/v1/projects/${slug}/members`); return request(`/api/v1/projects/${slug}/members`);
} }
export async function addProjectMember(slug: string, memberSlug: string): Promise<void> {
await request(`/api/v1/projects/${slug}/members`, {
method: "POST",
body: JSON.stringify({ slug: memberSlug }),
});
}
// --- Project Members ---
export async function getProjectMembers(slug: string): Promise<ProjectMember[]> {
return request(`/api/v1/projects/${slug}/members`);
}
export async function addProjectMember(slug: string, memberSlug: string): Promise<{ ok: boolean }> { export async function addProjectMember(slug: string, memberSlug: string): Promise<{ ok: boolean }> {
return request(`/api/v1/projects/${slug}/members`, { return request(`/api/v1/projects/${slug}/members`, {
method: "POST", method: "POST",

View File

@ -1,6 +1,7 @@
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { useParams, useSearchParams } from "react-router-dom"; import { useParams, useSearchParams, Link } from "react-router-dom";
import { getProjects, type Project } from "@/lib/api"; import { getProjects, type Project } from "@/lib/api";
import { logout } from "@/lib/auth-client";
import Sidebar from "@/components/Sidebar"; import Sidebar from "@/components/Sidebar";
import KanbanBoard from "@/components/KanbanBoard"; import KanbanBoard from "@/components/KanbanBoard";
import ChatPanel from "@/components/ChatPanel"; import ChatPanel from "@/components/ChatPanel";
@ -61,6 +62,22 @@ export default function ProjectPage() {
<p className="text-sm text-[var(--muted)]">{project.description}</p> <p className="text-sm text-[var(--muted)]">{project.description}</p>
)} )}
</div> </div>
<div className="flex items-center gap-2 md:hidden">
<Link
to="/settings"
className="text-[var(--muted)] hover:text-[var(--fg)] transition-colors"
title="Настройки"
>
</Link>
<button
onClick={logout}
className="text-[var(--muted)] hover:text-[var(--fg)] transition-colors cursor-pointer"
title="Выйти"
>
🚪
</button>
</div>
</div> </div>
<div className="flex gap-1"> <div className="flex gap-1">
{TABS.map((tab) => ( {TABS.map((tab) => (