mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-19 05:26:47 +00:00
fe05afec19
The Share button becomes the trip's Settings, a round button beside the back pill. The dialog is rebuilt around three areas (People, Sharing, Journal) with a side navigation, a fixed height and 960 px width on wide screens. Journal links one of your journals from the Journey addon to the trip. Every trip member is ticked as a reader by default, each can be raised to editor or left out, and the people a save would let in for the first time are named before it saves. The link can be changed or removed. With a link the trip gets a Journal tab on desktop and phone that shows the Journey addon's own view, live through its sync and trip:journal:changed. Nothing shows with the addon off. members.shareTrip and nav.share are gone with the button that used them.
32 lines
1.5 KiB
TypeScript
32 lines
1.5 KiB
TypeScript
import type {
|
|
TripJournalCandidatesResponse,
|
|
TripJournalLinkMemberRequest,
|
|
TripJournalLinkResponse,
|
|
} from '@trek/shared';
|
|
import apiClient from './client';
|
|
|
|
/**
|
|
* `/api/trips/:tripId/journal`: the journal from the Journey addon a trip shows,
|
|
* and who it is open to. In its own file rather than in the `client.ts` god
|
|
* module; repo/tripJournalLinkRepo.ts is the one caller.
|
|
*/
|
|
export const tripJournalApi = {
|
|
get: (tripId: number): Promise<TripJournalLinkResponse> =>
|
|
apiClient.get(`/trips/${tripId}/journal`).then((r) => r.data),
|
|
candidates: (tripId: number, journeyId: number): Promise<TripJournalCandidatesResponse> =>
|
|
apiClient.get(`/trips/${tripId}/journal/candidates`, { params: { journey_id: journeyId } }).then((r) => r.data),
|
|
link: (
|
|
tripId: number,
|
|
journeyId: number,
|
|
members: TripJournalLinkMemberRequest[]
|
|
): Promise<TripJournalLinkResponse> =>
|
|
apiClient.put(`/trips/${tripId}/journal`, { journey_id: journeyId, members }).then((r) => r.data),
|
|
setMembers: (tripId: number, members: TripJournalLinkMemberRequest[]): Promise<TripJournalLinkResponse> =>
|
|
apiClient.patch(`/trips/${tripId}/journal/members`, { members }).then((r) => r.data),
|
|
unlink: (tripId: number): Promise<TripJournalLinkResponse> =>
|
|
apiClient.delete(`/trips/${tripId}/journal`).then((r) => r.data),
|
|
/** The journals this person can open; the dialog offers the ones they own. */
|
|
journals: (): Promise<{ journeys: { id: number; user_id: number; title: string; subtitle?: string | null }[] }> =>
|
|
apiClient.get('/journeys').then((r) => r.data),
|
|
};
|