|
1 | 1 | import Model, { attr, belongsTo, hasMany } from '@ember-data/model'; |
| 2 | +import { waitForPromise } from '@ember/test-waiters'; |
2 | 3 |
|
| 4 | +import { apiAction } from '@mainmatter/ember-api-actions'; |
3 | 5 | import { keepLatestTask, task } from 'ember-concurrency'; |
4 | 6 | import fetch from 'fetch'; |
5 | 7 | import { alias } from 'macro-decorators'; |
@@ -166,42 +168,14 @@ export default class Version extends Model { |
166 | 168 | } |
167 | 169 |
|
168 | 170 | yankTask = keepLatestTask(async () => { |
169 | | - let response = await fetch(`/api/v1/crates/${this.crate.id}/${this.num}`, { |
170 | | - method: 'PATCH', |
171 | | - headers: { |
172 | | - 'Content-Type': 'application/json', |
173 | | - }, |
174 | | - body: JSON.stringify({ |
175 | | - version: { |
176 | | - yanked: true, |
177 | | - }, |
178 | | - }), |
179 | | - }); |
180 | | - if (!response.ok) { |
181 | | - throw new Error(`Yank request for ${this.crateName} v${this.num} failed`); |
182 | | - } |
183 | | - this.set('yanked', true); |
184 | | - |
185 | | - return await response.json(); |
| 171 | + let data = { version: { yanked: true } }; |
| 172 | + let payload = await waitForPromise(apiAction(this, { method: 'PATCH', data })); |
| 173 | + this.store.pushPayload(payload); |
186 | 174 | }); |
187 | 175 |
|
188 | 176 | unyankTask = keepLatestTask(async () => { |
189 | | - let response = await fetch(`/api/v1/crates/${this.crate.id}/${this.num}`, { |
190 | | - method: 'PATCH', |
191 | | - headers: { |
192 | | - 'Content-Type': 'application/json', |
193 | | - }, |
194 | | - body: JSON.stringify({ |
195 | | - version: { |
196 | | - yanked: false, |
197 | | - }, |
198 | | - }), |
199 | | - }); |
200 | | - if (!response.ok) { |
201 | | - throw new Error(`Unyank request for ${this.crateName} v${this.num} failed`); |
202 | | - } |
203 | | - this.set('yanked', false); |
204 | | - |
205 | | - return await response.json(); |
| 177 | + let data = { version: { yanked: false } }; |
| 178 | + let payload = await waitForPromise(apiAction(this, { method: 'PATCH', data })); |
| 179 | + this.store.pushPayload(payload); |
206 | 180 | }); |
207 | 181 | } |
0 commit comments