Use slug to identify modules for the bookmark mutation
This commit is contained in:
parent
0d6a7522f2
commit
8c908fddd2
|
|
@ -39,7 +39,7 @@
|
||||||
import UPDATE_MODULE_BOOKMARK_MUTATION from '@/graphql/gql/mutations/updateModuleBookmark.gql';
|
import UPDATE_MODULE_BOOKMARK_MUTATION from '@/graphql/gql/mutations/updateModuleBookmark.gql';
|
||||||
import OBJECTIVE_QUERY from '@/graphql/gql/objectiveQuery.gql';
|
import OBJECTIVE_QUERY from '@/graphql/gql/objectiveQuery.gql';
|
||||||
import ME_QUERY from '@/graphql/gql/meQuery.gql';
|
import ME_QUERY from '@/graphql/gql/meQuery.gql';
|
||||||
import MODULE_QUERY from '@/graphql/gql/moduleByIdQuery.gql';
|
import MODULE_FRAGMENT from '@/graphql/gql/fragments/moduleParts.gql';
|
||||||
|
|
||||||
import {withoutOwnerFirst} from '@/helpers/sorting';
|
import {withoutOwnerFirst} from '@/helpers/sorting';
|
||||||
import BookmarkActions from '@/components/notes/BookmarkActions';
|
import BookmarkActions from '@/components/notes/BookmarkActions';
|
||||||
|
|
@ -133,40 +133,36 @@
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
bookmark(bookmarked) {
|
bookmark(bookmarked) {
|
||||||
const id = this.module.id;
|
const slug = this.module.slug;
|
||||||
this.$apollo.mutate({
|
this.$apollo.mutate({
|
||||||
mutation: UPDATE_MODULE_BOOKMARK_MUTATION,
|
mutation: UPDATE_MODULE_BOOKMARK_MUTATION,
|
||||||
variables: {
|
variables: {
|
||||||
input: {
|
input: {
|
||||||
module: id,
|
module: slug,
|
||||||
bookmarked
|
bookmarked
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
update: (store, response) => {
|
update: (store, response) => {
|
||||||
const query = MODULE_QUERY;
|
const fragment = MODULE_FRAGMENT;
|
||||||
const variables = {id};
|
const id = `ModuleNode:${slug}`;
|
||||||
const data = store.readQuery({
|
const data = store.readFragment({
|
||||||
query,
|
fragment,
|
||||||
variables
|
id
|
||||||
});
|
});
|
||||||
|
|
||||||
const module = data.module;
|
|
||||||
|
|
||||||
if (bookmarked) {
|
if (bookmarked) {
|
||||||
module.bookmark = {
|
data.bookmark = {
|
||||||
__typename: 'ModuleBookmarkNode',
|
__typename: 'ModuleBookmarkNode',
|
||||||
note: null
|
note: null
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
module.bookmark = null;
|
data.bookmark = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
data.module = module;
|
store.writeFragment({
|
||||||
|
|
||||||
store.writeQuery({
|
|
||||||
data,
|
data,
|
||||||
query,
|
fragment,
|
||||||
variables
|
id
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
optimisticResponse: {
|
optimisticResponse: {
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,7 @@ export default function (uri) {
|
||||||
dataIdFromObject: obj => {
|
dataIdFromObject: obj => {
|
||||||
switch (obj.__typename) {
|
switch (obj.__typename) {
|
||||||
case 'InstrumentNode':
|
case 'InstrumentNode':
|
||||||
|
case 'ModuleNode':
|
||||||
return `${obj.__typename}:${obj.slug}`;
|
return `${obj.__typename}:${obj.slug}`;
|
||||||
default:
|
default:
|
||||||
return defaultDataIdFromObject(obj);
|
return defaultDataIdFromObject(obj);
|
||||||
|
|
|
||||||
|
|
@ -155,7 +155,7 @@ class UpdateChapterBookmark(relay.ClientIDMutation):
|
||||||
|
|
||||||
class UpdateModuleBookmark(relay.ClientIDMutation):
|
class UpdateModuleBookmark(relay.ClientIDMutation):
|
||||||
class Input:
|
class Input:
|
||||||
module = graphene.ID(required=True)
|
module = graphene.String(required=True)
|
||||||
bookmarked = graphene.Boolean(required=True)
|
bookmarked = graphene.Boolean(required=True)
|
||||||
|
|
||||||
success = graphene.Boolean()
|
success = graphene.Boolean()
|
||||||
|
|
@ -163,10 +163,10 @@ class UpdateModuleBookmark(relay.ClientIDMutation):
|
||||||
@classmethod
|
@classmethod
|
||||||
def mutate_and_get_payload(cls, root, info, **kwargs):
|
def mutate_and_get_payload(cls, root, info, **kwargs):
|
||||||
user = info.context.user
|
user = info.context.user
|
||||||
module_id = kwargs.get('module')
|
module_slug = kwargs.get('module')
|
||||||
bookmarked = kwargs.get('bookmarked')
|
bookmarked = kwargs.get('bookmarked')
|
||||||
|
|
||||||
module = get_object(Module, module_id)
|
module = Module.objects.get(slug=module_slug)
|
||||||
|
|
||||||
if bookmarked:
|
if bookmarked:
|
||||||
ModuleBookmark.objects.create(
|
ModuleBookmark.objects.create(
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue