diff --git a/src/api/friends.ts b/src/api/friends.ts new file mode 100644 index 0000000..9917ef9 --- /dev/null +++ b/src/api/friends.ts @@ -0,0 +1,24 @@ +import { apiFetch } from './client' +import type { Friend, FriendRequest } from '../types/api' + +export function fetchFriends() { + return apiFetch('/friends') +} + +export function fetchFriendRequests() { + return apiFetch('/friends/requests') +} + +export function sendFriendRequest(receiverUsername: string) { + return apiFetch('/friends/request', { + method: 'POST', + body: JSON.stringify({ receiver_username: receiverUsername }), + }); +} + +export function acceptFriendRequest(senderUuid: string) { + return apiFetch('/friends/accept', { + method: 'POST', + body: JSON.stringify({ sender_uuid: senderUuid }), + }) +} diff --git a/src/pages/FriendListPage.vue b/src/pages/FriendListPage.vue new file mode 100644 index 0000000..b414a0d --- /dev/null +++ b/src/pages/FriendListPage.vue @@ -0,0 +1,195 @@ + + + + + diff --git a/src/pages/RoomsPage.vue b/src/pages/RoomsPage.vue index ff74869..b476a67 100644 --- a/src/pages/RoomsPage.vue +++ b/src/pages/RoomsPage.vue @@ -7,6 +7,9 @@ + + to friendlist +
  • diff --git a/src/router/index.ts b/src/router/index.ts index 346e70a..7de8c66 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -4,6 +4,7 @@ import { initAuth, validateToken } from '../stores/auth.ts' import LoginPage from '../pages/LoginPage.vue' import RoomsPage from '../pages/RoomsPage.vue' import ChatPage from '../pages/ChatPage.vue' +import FriendListPage from '../pages/FriendListPage.vue' const router = createRouter({ history: createWebHistory(), @@ -11,6 +12,7 @@ const router = createRouter({ { path: '/login', component: LoginPage }, { path: '/', component: RoomsPage }, { path: '/rooms/:uuid', component: ChatPage, props: true }, + { path: '/friendlist', component: FriendListPage } ], }) diff --git a/src/types/api.ts b/src/types/api.ts index 741affd..dce4706 100644 --- a/src/types/api.ts +++ b/src/types/api.ts @@ -17,3 +17,12 @@ export interface Message { sent_at: string } +export interface Friend { + uuid: string + username: string +} + +export interface FriendRequest { + sender_uuid: string + sender_username: string +}