✨ Trip attachments, Backups
This commit is contained in:
parent
07911185c0
commit
96d6a18f88
@ -3,12 +3,13 @@ import { HttpClient } from '@angular/common/http';
|
|||||||
import { Category, Place } from '../types/poi';
|
import { Category, Place } from '../types/poi';
|
||||||
import { BehaviorSubject, map, Observable, shareReplay, tap } from 'rxjs';
|
import { BehaviorSubject, map, Observable, shareReplay, tap } from 'rxjs';
|
||||||
import { Info } from '../types/info';
|
import { Info } from '../types/info';
|
||||||
import { ImportResponse, Settings } from '../types/settings';
|
import { Backup, ImportResponse, Settings } from '../types/settings';
|
||||||
import {
|
import {
|
||||||
ChecklistItem,
|
ChecklistItem,
|
||||||
PackingItem,
|
PackingItem,
|
||||||
SharedTripURL,
|
SharedTripURL,
|
||||||
Trip,
|
Trip,
|
||||||
|
TripAttachment,
|
||||||
TripBase,
|
TripBase,
|
||||||
TripDay,
|
TripDay,
|
||||||
TripInvitation,
|
TripInvitation,
|
||||||
@ -95,16 +96,16 @@ export class ApiService {
|
|||||||
return this.httpClient.post<Place[]>(`${this.apiBaseUrl}/places/batch`, places);
|
return this.httpClient.post<Place[]>(`${this.apiBaseUrl}/places/batch`, places);
|
||||||
}
|
}
|
||||||
|
|
||||||
putPlace(place_id: number, place: Partial<Place>): Observable<Place> {
|
putPlace(placeId: number, place: Partial<Place>): Observable<Place> {
|
||||||
return this.httpClient.put<Place>(`${this.apiBaseUrl}/places/${place_id}`, place);
|
return this.httpClient.put<Place>(`${this.apiBaseUrl}/places/${placeId}`, place);
|
||||||
}
|
}
|
||||||
|
|
||||||
deletePlace(place_id: number): Observable<null> {
|
deletePlace(placeId: number): Observable<null> {
|
||||||
return this.httpClient.delete<null>(`${this.apiBaseUrl}/places/${place_id}`);
|
return this.httpClient.delete<null>(`${this.apiBaseUrl}/places/${placeId}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
getPlaceGPX(place_id: number): Observable<Place> {
|
getPlaceGPX(placeId: number): Observable<Place> {
|
||||||
return this.httpClient.get<Place>(`${this.apiBaseUrl}/places/${place_id}`);
|
return this.httpClient.get<Place>(`${this.apiBaseUrl}/places/${placeId}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
getTrips(): Observable<TripBase[]> {
|
getTrips(): Observable<TripBase[]> {
|
||||||
@ -123,97 +124,97 @@ export class ApiService {
|
|||||||
return this.httpClient.post<TripBase>(`${this.apiBaseUrl}/trips`, trip);
|
return this.httpClient.post<TripBase>(`${this.apiBaseUrl}/trips`, trip);
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteTrip(trip_id: number): Observable<null> {
|
deleteTrip(tripId: number): Observable<null> {
|
||||||
return this.httpClient.delete<null>(`${this.apiBaseUrl}/trips/${trip_id}`);
|
return this.httpClient.delete<null>(`${this.apiBaseUrl}/trips/${tripId}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
putTrip(trip: Partial<Trip>, trip_id: number): Observable<Trip> {
|
putTrip(trip: Partial<Trip>, tripId: number): Observable<Trip> {
|
||||||
return this.httpClient.put<Trip>(`${this.apiBaseUrl}/trips/${trip_id}`, trip);
|
return this.httpClient.put<Trip>(`${this.apiBaseUrl}/trips/${tripId}`, trip);
|
||||||
}
|
}
|
||||||
|
|
||||||
postTripDay(tripDay: TripDay, trip_id: number): Observable<TripDay> {
|
postTripDay(tripDay: TripDay, tripId: number): Observable<TripDay> {
|
||||||
return this.httpClient.post<TripDay>(`${this.apiBaseUrl}/trips/${trip_id}/days`, tripDay);
|
return this.httpClient.post<TripDay>(`${this.apiBaseUrl}/trips/${tripId}/days`, tripDay);
|
||||||
}
|
}
|
||||||
|
|
||||||
putTripDay(tripDay: Partial<TripDay>, trip_id: number): Observable<TripDay> {
|
putTripDay(tripDay: Partial<TripDay>, tripId: number): Observable<TripDay> {
|
||||||
return this.httpClient.put<TripDay>(`${this.apiBaseUrl}/trips/${trip_id}/days/${tripDay.id}`, tripDay);
|
return this.httpClient.put<TripDay>(`${this.apiBaseUrl}/trips/${tripId}/days/${tripDay.id}`, tripDay);
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteTripDay(trip_id: number, day_id: number): Observable<null> {
|
deleteTripDay(tripId: number, day_id: number): Observable<null> {
|
||||||
return this.httpClient.delete<null>(`${this.apiBaseUrl}/trips/${trip_id}/days/${day_id}`);
|
return this.httpClient.delete<null>(`${this.apiBaseUrl}/trips/${tripId}/days/${day_id}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
postTripDayItem(item: TripItem, trip_id: number, day_id: number): Observable<TripItem> {
|
postTripDayItem(item: TripItem, tripId: number, day_id: number): Observable<TripItem> {
|
||||||
return this.httpClient.post<TripItem>(`${this.apiBaseUrl}/trips/${trip_id}/days/${day_id}/items`, item);
|
return this.httpClient.post<TripItem>(`${this.apiBaseUrl}/trips/${tripId}/days/${day_id}/items`, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
putTripDayItem(item: Partial<TripItem>, trip_id: number, day_id: number, item_id: number): Observable<TripItem> {
|
putTripDayItem(item: Partial<TripItem>, tripId: number, day_id: number, item_id: number): Observable<TripItem> {
|
||||||
return this.httpClient.put<TripItem>(`${this.apiBaseUrl}/trips/${trip_id}/days/${day_id}/items/${item_id}`, item);
|
return this.httpClient.put<TripItem>(`${this.apiBaseUrl}/trips/${tripId}/days/${day_id}/items/${item_id}`, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteTripDayItem(trip_id: number, day_id: number, item_id: number): Observable<null> {
|
deleteTripDayItem(tripId: number, day_id: number, item_id: number): Observable<null> {
|
||||||
return this.httpClient.delete<null>(`${this.apiBaseUrl}/trips/${trip_id}/days/${day_id}/items/${item_id}`);
|
return this.httpClient.delete<null>(`${this.apiBaseUrl}/trips/${tripId}/days/${day_id}/items/${item_id}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
getSharedTrip(token: string): Observable<Trip> {
|
getSharedTrip(token: string): Observable<Trip> {
|
||||||
return this.httpClient.get<Trip>(`${this.apiBaseUrl}/trips/shared/${token}`, { headers: NO_AUTH_HEADER });
|
return this.httpClient.get<Trip>(`${this.apiBaseUrl}/trips/shared/${token}`, { headers: NO_AUTH_HEADER });
|
||||||
}
|
}
|
||||||
|
|
||||||
getSharedTripURL(trip_id: number): Observable<string> {
|
getSharedTripURL(tripId: number): Observable<string> {
|
||||||
return this.httpClient.get<SharedTripURL>(`${this.apiBaseUrl}/trips/${trip_id}/share`).pipe(
|
return this.httpClient.get<SharedTripURL>(`${this.apiBaseUrl}/trips/${tripId}/share`).pipe(
|
||||||
map((t) => window.location.origin + t.url),
|
map((t) => window.location.origin + t.url),
|
||||||
shareReplay(),
|
shareReplay(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
createSharedTrip(trip_id: number): Observable<string> {
|
createSharedTrip(tripId: number): Observable<string> {
|
||||||
return this.httpClient
|
return this.httpClient
|
||||||
.post<SharedTripURL>(`${this.apiBaseUrl}/trips/${trip_id}/share`, {})
|
.post<SharedTripURL>(`${this.apiBaseUrl}/trips/${tripId}/share`, {})
|
||||||
.pipe(map((t) => window.location.origin + t.url));
|
.pipe(map((t) => window.location.origin + t.url));
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteSharedTrip(trip_id: number): Observable<null> {
|
deleteSharedTrip(tripId: number): Observable<null> {
|
||||||
return this.httpClient.delete<null>(`${this.apiBaseUrl}/trips/${trip_id}/share`);
|
return this.httpClient.delete<null>(`${this.apiBaseUrl}/trips/${tripId}/share`);
|
||||||
}
|
}
|
||||||
|
|
||||||
getPackingList(trip_id: number): Observable<PackingItem[]> {
|
getPackingList(tripId: number): Observable<PackingItem[]> {
|
||||||
return this.httpClient.get<PackingItem[]>(`${this.apiBaseUrl}/trips/${trip_id}/packing`);
|
return this.httpClient.get<PackingItem[]>(`${this.apiBaseUrl}/trips/${tripId}/packing`);
|
||||||
}
|
}
|
||||||
|
|
||||||
getSharedTripPackingList(token: string): Observable<PackingItem[]> {
|
getSharedTripPackingList(token: string): Observable<PackingItem[]> {
|
||||||
return this.httpClient.get<PackingItem[]>(`${this.apiBaseUrl}/trips/shared/${token}/packing`);
|
return this.httpClient.get<PackingItem[]>(`${this.apiBaseUrl}/trips/shared/${token}/packing`);
|
||||||
}
|
}
|
||||||
|
|
||||||
postPackingItem(trip_id: number, p_item: PackingItem): Observable<PackingItem> {
|
postPackingItem(tripId: number, p_item: PackingItem): Observable<PackingItem> {
|
||||||
return this.httpClient.post<PackingItem>(`${this.apiBaseUrl}/trips/${trip_id}/packing`, p_item);
|
return this.httpClient.post<PackingItem>(`${this.apiBaseUrl}/trips/${tripId}/packing`, p_item);
|
||||||
}
|
}
|
||||||
|
|
||||||
putPackingItem(trip_id: number, p_id: number, p_item: Partial<PackingItem>): Observable<PackingItem> {
|
putPackingItem(tripId: number, p_id: number, p_item: Partial<PackingItem>): Observable<PackingItem> {
|
||||||
return this.httpClient.put<PackingItem>(`${this.apiBaseUrl}/trips/${trip_id}/packing/${p_id}`, p_item);
|
return this.httpClient.put<PackingItem>(`${this.apiBaseUrl}/trips/${tripId}/packing/${p_id}`, p_item);
|
||||||
}
|
}
|
||||||
|
|
||||||
deletePackingItem(trip_id: number, p_id: number): Observable<null> {
|
deletePackingItem(tripId: number, p_id: number): Observable<null> {
|
||||||
return this.httpClient.delete<null>(`${this.apiBaseUrl}/trips/${trip_id}/packing/${p_id}`);
|
return this.httpClient.delete<null>(`${this.apiBaseUrl}/trips/${tripId}/packing/${p_id}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
getChecklist(trip_id: number): Observable<ChecklistItem[]> {
|
getChecklist(tripId: number): Observable<ChecklistItem[]> {
|
||||||
return this.httpClient.get<ChecklistItem[]>(`${this.apiBaseUrl}/trips/${trip_id}/checklist`);
|
return this.httpClient.get<ChecklistItem[]>(`${this.apiBaseUrl}/trips/${tripId}/checklist`);
|
||||||
}
|
}
|
||||||
|
|
||||||
getSharedTripChecklist(token: string): Observable<ChecklistItem[]> {
|
getSharedTripChecklist(token: string): Observable<ChecklistItem[]> {
|
||||||
return this.httpClient.get<ChecklistItem[]>(`${this.apiBaseUrl}/trips/shared/${token}/checklist`);
|
return this.httpClient.get<ChecklistItem[]>(`${this.apiBaseUrl}/trips/shared/${token}/checklist`);
|
||||||
}
|
}
|
||||||
|
|
||||||
postChecklistItem(trip_id: number, item: ChecklistItem): Observable<ChecklistItem> {
|
postChecklistItem(tripId: number, item: ChecklistItem): Observable<ChecklistItem> {
|
||||||
return this.httpClient.post<ChecklistItem>(`${this.apiBaseUrl}/trips/${trip_id}/checklist`, item);
|
return this.httpClient.post<ChecklistItem>(`${this.apiBaseUrl}/trips/${tripId}/checklist`, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
putChecklistItem(trip_id: number, id: number, item: Partial<ChecklistItem>): Observable<ChecklistItem> {
|
putChecklistItem(tripId: number, id: number, item: Partial<ChecklistItem>): Observable<ChecklistItem> {
|
||||||
return this.httpClient.put<ChecklistItem>(`${this.apiBaseUrl}/trips/${trip_id}/checklist/${id}`, item);
|
return this.httpClient.put<ChecklistItem>(`${this.apiBaseUrl}/trips/${tripId}/checklist/${id}`, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteChecklistItem(trip_id: number, id: number): Observable<null> {
|
deleteChecklistItem(tripId: number, id: number): Observable<null> {
|
||||||
return this.httpClient.delete<null>(`${this.apiBaseUrl}/trips/${trip_id}/checklist/${id}`);
|
return this.httpClient.delete<null>(`${this.apiBaseUrl}/trips/${tripId}/checklist/${id}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
getHasTripsInvitations(): Observable<boolean> {
|
getHasTripsInvitations(): Observable<boolean> {
|
||||||
@ -224,24 +225,24 @@ export class ApiService {
|
|||||||
return this.httpClient.get<TripInvitation[]>(`${this.apiBaseUrl}/trips/invitations`);
|
return this.httpClient.get<TripInvitation[]>(`${this.apiBaseUrl}/trips/invitations`);
|
||||||
}
|
}
|
||||||
|
|
||||||
getTripMembers(trip_id: number): Observable<TripMember[]> {
|
getTripMembers(tripId: number): Observable<TripMember[]> {
|
||||||
return this.httpClient.get<TripMember[]>(`${this.apiBaseUrl}/trips/${trip_id}/members`);
|
return this.httpClient.get<TripMember[]>(`${this.apiBaseUrl}/trips/${tripId}/members`);
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteTripMember(trip_id: number, username: string): Observable<null> {
|
deleteTripMember(tripId: number, username: string): Observable<null> {
|
||||||
return this.httpClient.delete<null>(`${this.apiBaseUrl}/trips/${trip_id}/members/${username}`);
|
return this.httpClient.delete<null>(`${this.apiBaseUrl}/trips/${tripId}/members/${username}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
inviteTripMember(trip_id: number, user: string): Observable<TripMember> {
|
inviteTripMember(tripId: number, user: string): Observable<TripMember> {
|
||||||
return this.httpClient.post<TripMember>(`${this.apiBaseUrl}/trips/${trip_id}/members`, { user });
|
return this.httpClient.post<TripMember>(`${this.apiBaseUrl}/trips/${tripId}/members`, { user });
|
||||||
}
|
}
|
||||||
|
|
||||||
acceptTripMemberInvite(trip_id: number): Observable<null> {
|
acceptTripMemberInvite(tripId: number): Observable<null> {
|
||||||
return this.httpClient.post<null>(`${this.apiBaseUrl}/trips/${trip_id}/members/accept`, {});
|
return this.httpClient.post<null>(`${this.apiBaseUrl}/trips/${tripId}/members/accept`, {});
|
||||||
}
|
}
|
||||||
|
|
||||||
declineTripMemberInvite(trip_id: number): Observable<null> {
|
declineTripMemberInvite(tripId: number): Observable<null> {
|
||||||
return this.httpClient.post<null>(`${this.apiBaseUrl}/trips/${trip_id}/members/decline`, {});
|
return this.httpClient.post<null>(`${this.apiBaseUrl}/trips/${tripId}/members/decline`, {});
|
||||||
}
|
}
|
||||||
|
|
||||||
checkVersion(): Observable<string> {
|
checkVersion(): Observable<string> {
|
||||||
@ -264,17 +265,8 @@ export class ApiService {
|
|||||||
.pipe(tap((settings) => this.settingsSubject.next(settings)));
|
.pipe(tap((settings) => this.settingsSubject.next(settings)));
|
||||||
}
|
}
|
||||||
|
|
||||||
settingsUserExport(): Observable<any> {
|
|
||||||
return this.httpClient.get<any>(`${this.apiBaseUrl}/settings/export`);
|
|
||||||
}
|
|
||||||
|
|
||||||
settingsUserImport(formdata: FormData): Observable<ImportResponse> {
|
settingsUserImport(formdata: FormData): Observable<ImportResponse> {
|
||||||
const headers = { enctype: 'multipart/form-data' };
|
return this.httpClient.post<ImportResponse>(`${this.apiBaseUrl}/settings/import`, formdata).pipe(
|
||||||
return this.httpClient
|
|
||||||
.post<ImportResponse>(`${this.apiBaseUrl}/settings/import`, formdata, {
|
|
||||||
headers: headers,
|
|
||||||
})
|
|
||||||
.pipe(
|
|
||||||
tap((resp) => {
|
tap((resp) => {
|
||||||
if (resp.categories) {
|
if (resp.categories) {
|
||||||
this._categoriesSubjectNext(resp.categories);
|
this._categoriesSubjectNext(resp.categories);
|
||||||
@ -285,4 +277,36 @@ export class ApiService {
|
|||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
postTripAttachment(tripId: number, formdata: FormData): Observable<TripAttachment> {
|
||||||
|
return this.httpClient.post<TripAttachment>(`${this.apiBaseUrl}/trips/${tripId}/attachments`, formdata);
|
||||||
|
}
|
||||||
|
|
||||||
|
deleteTripAttachment(tripId: number, attachmentId: number): Observable<null> {
|
||||||
|
return this.httpClient.delete<null>(`${this.apiBaseUrl}/trips/${tripId}/attachments/${attachmentId}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
downloadTripAttachment(tripId: number, attachmentId: number): Observable<Blob> {
|
||||||
|
return this.httpClient.get(`${this.apiBaseUrl}/trips/${tripId}/attachments/${attachmentId}/download`, {
|
||||||
|
responseType: 'blob',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
getBackups(): Observable<Backup[]> {
|
||||||
|
return this.httpClient.get<Backup[]>(`${this.apiBaseUrl}/settings/backups`);
|
||||||
|
}
|
||||||
|
|
||||||
|
createBackup(): Observable<Backup> {
|
||||||
|
return this.httpClient.post<Backup>(`${this.apiBaseUrl}/settings/backups`, {});
|
||||||
|
}
|
||||||
|
|
||||||
|
deleteBackup(backupId: number): Observable<Backup> {
|
||||||
|
return this.httpClient.delete<Backup>(`${this.apiBaseUrl}/settings/backups/${backupId}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
downloadBackup(backupId: number): Observable<Blob> {
|
||||||
|
return this.httpClient.get(`${this.apiBaseUrl}/settings/backups/${backupId}/download`, {
|
||||||
|
responseType: 'blob',
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user