66import Ember from 'ember' ;
77import RSVP from 'rsvp' ;
88import { pluralize } from 'ember-inflector' ;
9- import FetchMixin from 'ember-jsonapi-resources/mixins/fetch ' ;
9+ import FetchOrAjax from 'ember-fetchjax/utils/fetchjax ' ;
1010
1111const { Evented, getOwner } = Ember ;
1212
@@ -18,7 +18,7 @@ const { Evented, getOwner } = Ember;
1818 @uses Ember.Evented
1919 @static
2020*/
21- export default Ember . Object . extend ( FetchMixin , Evented , {
21+ export default Ember . Object . extend ( Evented , {
2222
2323 /**
2424 The name of the entity
@@ -49,6 +49,41 @@ export default Ember.Object.extend(FetchMixin, Evented, {
4949 }
5050 } ) ,
5151
52+ /**
53+ @method init
54+ */
55+ init ( ) {
56+ this . _super ( ...arguments ) ;
57+ let fetchjax = new FetchOrAjax ( {
58+ useAjax : false ,
59+ ajax : Ember . $ . ajax ,
60+ promise : Ember . RSVP . Promise ,
61+ deserialize : this . deserialize . bind ( this )
62+ } ) ;
63+ this . _fetch = fetchjax . fetch . bind ( fetchjax ) ;
64+ } ,
65+
66+ /**
67+ @method deserialize
68+ @param {Object } json payload from response
69+ @param {Object } headers received from response
70+ @param {Object } options passed into original request
71+ */
72+ deserialize ( json , headers , options ) {
73+ if ( ! json || json === '' || ! json . data ) {
74+ return null ;
75+ } else if ( options . isUpdate ) {
76+ json . data = this . serializer . transformAttributes ( json . data ) ;
77+ this . cacheUpdate ( { meta : json . meta , data : json . data , headers : headers } ) ;
78+ return json . data ;
79+ } else {
80+ let resource = this . serializer . deserialize ( json ) ;
81+ this . cacheResource ( { meta : json . meta , data : resource , headers : headers } ) ;
82+ this . serializer . deserializeIncluded ( json . included , { headers : headers } ) ;
83+ return resource ;
84+ }
85+ } ,
86+
5287 /**
5388 Find resource(s) using an id or a using a query `{id: '', query: {}}`
5489
@@ -348,11 +383,10 @@ export default Ember.Object.extend(FetchMixin, Evented, {
348383 fetch ( url , options = { } ) {
349384 url = this . fetchUrl ( url ) ;
350385 let isUpdate = this . fetchOptions ( options ) ;
351- if ( this . get ( 'useFetch' ) ) {
352- return this . _fetch ( url , options , isUpdate ) ;
353- } else {
354- return this . _ajax ( url , options , isUpdate ) ;
386+ if ( isUpdate ) {
387+ options . isUpdate = true ;
355388 }
389+ return this . _fetch ( url , options ) ;
356390 } ,
357391
358392 /**
0 commit comments