Merge branch '18966-collection-not-found-ui'. Closes #18966
[arvados-workbench2.git] / src / services / favorite-service / favorite-service.ts
index 92b0713dbcc6ee2ce8b0eb0939d4cb928710676b..8b66455babf9db6ca6ecf88d01cd9eb6e170b8de 100644 (file)
@@ -4,9 +4,9 @@
 
 import { LinkService } from "../link-service/link-service";
 import { GroupsService, GroupContentsResource } from "../groups-service/groups-service";
-import { LinkClass } from "~/models/link";
-import { FilterBuilder, joinFilters } from "~/services/api/filter-builder";
-import { ListResults } from "~/services/common-service/common-resource-service";
+import { LinkClass } from "models/link";
+import { FilterBuilder, joinFilters } from "services/api/filter-builder";
+import { ListResults } from 'services/common-service/common-service';
 
 export interface FavoriteListArguments {
     limit?: number;
@@ -20,7 +20,7 @@ export class FavoriteService {
     constructor(
         private linkService: LinkService,
         private groupsService: GroupsService,
-    ) {}
+    ) { }
 
     create(data: { userUuid: string; resource: { uuid: string; name: string } }) {
         return this.linkService.create({
@@ -36,31 +36,31 @@ export class FavoriteService {
         return this.linkService
             .list({
                 filters: new FilterBuilder()
-                    .addEqual('tailUuid', data.userUuid)
-                    .addEqual('headUuid', data.resourceUuid)
-                    .addEqual('linkClass', LinkClass.STAR)
+                    .addEqual('owner_uuid', data.userUuid)
+                    .addEqual('head_uuid', data.resourceUuid)
+                    .addEqual('link_class', LinkClass.STAR)
                     .getFilters()
             })
             .then(results => Promise.all(
                 results.items.map(item => this.linkService.delete(item.uuid))));
     }
 
-    list(userUuid: string, { filters, limit, offset, linkOrder, contentOrder }: FavoriteListArguments = {}): Promise<ListResults<GroupContentsResource>> {
+    list(userUuid: string, { filters, limit, offset, linkOrder, contentOrder }: FavoriteListArguments = {}, showOnlyOwned: boolean = true): Promise<ListResults<GroupContentsResource>> {
         const listFilters = new FilterBuilder()
-            .addEqual('tailUuid', userUuid)
-            .addEqual('linkClass', LinkClass.STAR)
+            .addEqual('owner_uuid', userUuid)
+            .addEqual('link_class', LinkClass.STAR)
             .getFilters();
 
         return this.linkService
             .list({
-                filters: joinFilters(filters, listFilters),
+                filters: joinFilters(filters || '', listFilters),
                 limit,
                 offset,
                 order: linkOrder
             })
             .then(results => {
                 const uuids = results.items.map(item => item.headUuid);
-                return this.groupsService.contents(userUuid, {
+                return this.groupsService.contents(showOnlyOwned ? userUuid : '', {
                     limit,
                     offset,
                     order: contentOrder,
@@ -74,9 +74,9 @@ export class FavoriteService {
         return this.linkService
             .list({
                 filters: new FilterBuilder()
-                    .addIn("headUuid", resourceUuids)
-                    .addEqual("tailUuid", userUuid)
-                    .addEqual("linkClass", LinkClass.STAR)
+                    .addIn("head_uuid", resourceUuids)
+                    .addEqual("owner_uuid", userUuid)
+                    .addEqual("link_class", LinkClass.STAR)
                     .getFilters()
             })
             .then(({ items }) => resourceUuids.reduce((results, uuid) => {