@@ -230,6 +230,62 @@ export class HttpService {
230230 return this . get < Array < any > > ( url ) ;
231231 }
232232
233+ /**
234+ * Get all favorite folders of current user
235+ */
236+ getFavoriteFolders ( ) {
237+ const url = '/api/v1/assets/favorite-folders/' ;
238+ return this . get < Array < any > > ( url ) ;
239+ }
240+
241+ /**
242+ * Create a favorite folder
243+ * @param name folder name
244+ * @param parent parent folder id, null means a top-level folder
245+ */
246+ createFavoriteFolder ( name : string , parent : string = null ) {
247+ const url = '/api/v1/assets/favorite-folders/' ;
248+ return this . post ( url , { name, parent } ) ;
249+ }
250+
251+ /**
252+ * Delete a favorite folder (its favorite relations are cascade-removed by backend)
253+ * @param folderId folder id
254+ */
255+ deleteFavoriteFolder ( folderId : string ) {
256+ const url = `/api/v1/assets/favorite-folders/${ folderId } /` ;
257+ return this . delete ( url ) ;
258+ }
259+
260+ /**
261+ * Get favorite asset records inside a folder
262+ * @param folderId folder id
263+ */
264+ getFavoriteAssetsByFolder ( folderId : string ) {
265+ const url = `/api/v1/assets/favorite-assets/?folder=${ folderId } ` ;
266+ return this . get < Array < any > > ( url ) ;
267+ }
268+
269+ /**
270+ * Favorite an asset into a folder
271+ * @param assetId asset id
272+ * @param folderId folder id
273+ */
274+ favoriteAssetToFolder ( assetId : string , folderId : string ) {
275+ const url = '/api/v1/assets/favorite-assets/' ;
276+ return this . post ( url , { asset : assetId , folder : folderId } ) ;
277+ }
278+
279+ /**
280+ * Remove an asset from a folder
281+ * @param assetId asset id
282+ * @param folderId folder id
283+ */
284+ removeFavoriteFromFolder ( assetId : string , folderId : string ) {
285+ const url = `/api/v1/assets/favorite-assets/?asset=${ assetId } &folder=${ folderId } ` ;
286+ return this . delete ( url ) ;
287+ }
288+
233289 search ( q : string ) {
234290 const params = new HttpParams ( ) . set ( 'q' , q ) ;
235291 return this . get ( '/api/search' , { params : params } ) ;
0 commit comments