15768: fixed rename of single collection bug Arvados-DCO-1.1-Signed-off-by: Lisa...
[arvados.git] / src / services / favorite-service / favorite-service.ts
index 37c1380b6a6856eea91f43b17784e976601782d4..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-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;
@@ -23,38 +23,20 @@ export class FavoriteService {
     ) { }
 
     create(data: { userUuid: string; resource: { uuid: string; name: string } }) {
-        const l = this.linkService.create({
-            // If this is for the all users group, it must be owned by
-            // the system user.
-            ownerUuid: (data.userUuid.substr(-22) === "-j7d0g-fffffffffffffff" ?
-                data.userUuid.substr(0, 5) + "-tpzed-000000000000000"
-                : data.userUuid),
+        return this.linkService.create({
+            ownerUuid: data.userUuid,
             tailUuid: data.userUuid,
             headUuid: data.resource.uuid,
             linkClass: LinkClass.STAR,
             name: data.resource.name
         });
-
-        if (data.userUuid.substr(-22) === "-j7d0g-fffffffffffffff") {
-            // If this is for the all users group, we need to create a
-            // permission link as well.
-            l.then(result =>
-                this.linkService.create({
-                    tailUuid: data.userUuid,
-                    headUuid: result.uuid,
-                    linkClass: LinkClass.PERMISSION,
-                    name: "can_read"
-                }));
-        }
-
-        return l;
     }
 
     delete(data: { userUuid: string; resourceUuid: string; }) {
         return this.linkService
             .list({
                 filters: new FilterBuilder()
-                    .addEqual('tail_uuid', data.userUuid)
+                    .addEqual('owner_uuid', data.userUuid)
                     .addEqual('head_uuid', data.resourceUuid)
                     .addEqual('link_class', LinkClass.STAR)
                     .getFilters()
@@ -63,7 +45,7 @@ export class FavoriteService {
                 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('owner_uuid', userUuid)
             .addEqual('link_class', LinkClass.STAR)
@@ -78,7 +60,7 @@ export class FavoriteService {
             })
             .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,
@@ -93,7 +75,7 @@ export class FavoriteService {
             .list({
                 filters: new FilterBuilder()
                     .addIn("head_uuid", resourceUuids)
-                    .addEqual("tail_uuid", userUuid)
+                    .addEqual("owner_uuid", userUuid)
                     .addEqual("link_class", LinkClass.STAR)
                     .getFilters()
             })