Version 5.1 - All the GraphQL #32
@ -1,6 +1,7 @@
|
||||
<article
|
||||
class="media"
|
||||
data-kitsu-id="<?= $item['id'] ?>"
|
||||
data-anilist-id="<?= $item['anilist_id'] ?>"
|
||||
data-mal-id="<?= $item['mal_id'] ?>"
|
||||
>
|
||||
<?php if ($auth->isAuthenticated()): ?>
|
||||
|
@ -63,6 +63,7 @@ _.on('body.anime.list', 'click', '.plus-one', (e) => {
|
||||
// Setup the update data
|
||||
let data = {
|
||||
id: parentSel.dataset.kitsuId,
|
||||
anilist_id: parentSel.dataset.anilistId,
|
||||
mal_id: parentSel.dataset.malId,
|
||||
data: {
|
||||
progress: watchedCount + 1
|
||||
|
@ -5,6 +5,7 @@ import _ from './anime-client.js';
|
||||
_.on('main', 'change', '.big-check', (e) => {
|
||||
const id = e.target.id;
|
||||
document.getElementById(`mal_${id}`).checked = true;
|
||||
document.getElementById(`anilist_${id}`).checked = true;
|
||||
});
|
||||
|
||||
/**
|
||||
@ -55,6 +56,7 @@ export function renderSearchResults (type, data, isCollection = false) {
|
||||
return `
|
||||
<article class="media search ${disabled}">
|
||||
<div class="name">
|
||||
<input type="radio" class="mal-check" id="anilist_${item.slug}" name="anilist_id" value="${item.anilist_id}" ${disabled} />
|
||||
<input type="radio" class="mal-check" id="mal_${item.slug}" name="mal_id" value="${item.mal_id}" ${disabled} />
|
||||
<input type="radio" class="big-check" id="${item.slug}" name="id" value="${item.id}" ${disabled} />
|
||||
<label for="${item.slug}">
|
||||
|
2
public/css/auto.min.css
vendored
2
public/css/auto.min.css
vendored
File diff suppressed because one or more lines are too long
2
public/css/dark.min.css
vendored
2
public/css/dark.min.css
vendored
File diff suppressed because one or more lines are too long
2
public/css/light.min.css
vendored
2
public/css/light.min.css
vendored
File diff suppressed because one or more lines are too long
2
public/js/scripts.min.js
vendored
2
public/js/scripts.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -107,13 +107,7 @@ final class Model
|
||||
*/
|
||||
public function createListItem(array $data, string $type = 'anime'): ?Request
|
||||
{
|
||||
if ($data['mal_id'] === NULL)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
$mediaId = $this->getMediaIdFromMalId($data['mal_id'], mb_strtoupper($type));
|
||||
|
||||
$mediaId = $this->getMediaId($data, $type);
|
||||
if ($mediaId === NULL)
|
||||
{
|
||||
return NULL;
|
||||
@ -145,7 +139,7 @@ final class Model
|
||||
public function createFullListItem(array $data, string $type): Request
|
||||
{
|
||||
$createData = $data['data'];
|
||||
$mediaId = $this->getMediaIdFromMalId($data['mal_id'], strtoupper($type));
|
||||
$mediaId = $this->getMediaId($data, $type);
|
||||
|
||||
if (empty($mediaId))
|
||||
{
|
||||
@ -230,6 +224,13 @@ final class Model
|
||||
return $this->listItem->delete($id);
|
||||
}
|
||||
|
||||
public function deleteItem(FormItem $data, string $type): ?Request
|
||||
{
|
||||
$mediaId = $this->getMediaId((array)$data, $type);
|
||||
|
||||
return $this->listItem->delete($mediaId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the id of the specific list entry from the malId
|
||||
*
|
||||
@ -269,6 +270,28 @@ final class Model
|
||||
return (string) $info['data']['MediaList']['id'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Find the id to update by
|
||||
*
|
||||
* @param array $data
|
||||
* @param string $type
|
||||
* @return string|null
|
||||
*/
|
||||
private function getMediaId (array $data, string $type = 'ANIME'): ?string
|
||||
{
|
||||
if ($data['anilist_id'] !== NULL)
|
||||
{
|
||||
return $data['anilist_id'];
|
||||
}
|
||||
|
||||
if ($data['mal_id'] !== NULL)
|
||||
{
|
||||
return $this->getMediaIdFromMalId($data['mal_id'], mb_strtoupper($type));
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Anilist media id from the malId
|
||||
*/
|
||||
|
@ -64,4 +64,15 @@ trait MutationTrait
|
||||
{
|
||||
return $this->listItem->delete($id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove a list item
|
||||
*
|
||||
* @param FormItem $data
|
||||
* @return Request
|
||||
*/
|
||||
public function deleteItem(FormItem $data): Request
|
||||
{
|
||||
return $this->listItem->delete($data['id']);
|
||||
}
|
||||
}
|
||||
|
@ -49,6 +49,7 @@ final class AnimeListTransformer extends AbstractTransformer
|
||||
? (int) $anime['episodeCount']
|
||||
: '-';
|
||||
|
||||
$AnilistId = NULL;
|
||||
$MALid = NULL;
|
||||
|
||||
$mappings = $anime['mappings']['nodes'] ?? [];
|
||||
@ -59,7 +60,11 @@ final class AnimeListTransformer extends AbstractTransformer
|
||||
if ($mapping['externalSite'] === 'MYANIMELIST_ANIME')
|
||||
{
|
||||
$MALid = $mapping['externalId'];
|
||||
break;
|
||||
}
|
||||
|
||||
if ($mapping['externalSite'] === 'ANILIST_ANIME')
|
||||
{
|
||||
$AnilistId = $mapping['externalId'];
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -73,6 +78,7 @@ final class AnimeListTransformer extends AbstractTransformer
|
||||
|
||||
return AnimeListItem::from([
|
||||
'id' => $item['id'],
|
||||
'anilist_id' => $AnilistId,
|
||||
'mal_id' => $MALid,
|
||||
'episodes' => [
|
||||
'watched' => (int) $item['progress'] !== 0
|
||||
@ -120,6 +126,7 @@ final class AnimeListTransformer extends AbstractTransformer
|
||||
|
||||
$untransformed = FormItem::from([
|
||||
'id' => $item['id'],
|
||||
'anilist_id' => $item['anilist_id'] ?? NULL,
|
||||
'mal_id' => $item['mal_id'] ?? NULL,
|
||||
'data' => [
|
||||
'status' => $item['watching_status'],
|
||||
|
@ -266,7 +266,7 @@ final class Anime extends BaseController
|
||||
$this->checkAuth();
|
||||
|
||||
$body = (array) $this->request->getParsedBody();
|
||||
$response = $this->model->deleteLibraryItem($body['id'], $body['mal_id']);
|
||||
$response = $this->model->deleteItem(FormItem::from($body));
|
||||
|
||||
if ($response === TRUE)
|
||||
{
|
||||
|
@ -95,7 +95,7 @@ trait MediaTrait
|
||||
|
||||
$requester->addRequest($kitsuRequest, 'kitsu');
|
||||
|
||||
if ($this->anilistEnabled && $data['mal_id'] !== NULL)
|
||||
if ($this->anilistEnabled && (isset($data['anilist_id']) || isset($data['mal_id'])))
|
||||
{
|
||||
// If can't map MAL id, this will be null
|
||||
$maybeRequest = $this->anilistModel->createListItem($data, strtoupper($this->type));
|
||||
@ -121,7 +121,7 @@ trait MediaTrait
|
||||
$requester = new ParallelAPIRequest();
|
||||
$requester->addRequest($this->kitsuModel->incrementListItem($data), 'kitsu');
|
||||
|
||||
if (( ! empty($data['mal_id'])) && $this->anilistEnabled)
|
||||
if ($this->anilistEnabled && (isset($data['anilist_id']) || isset($data['mal_id'])))
|
||||
{
|
||||
// If can't map MAL id, this will be null
|
||||
$maybeRequest = $this->anilistModel->incrementListItem($data, strtoupper($this->type));
|
||||
@ -153,7 +153,7 @@ trait MediaTrait
|
||||
$requester = new ParallelAPIRequest();
|
||||
$requester->addRequest($this->kitsuModel->updateListItem($data), 'kitsu');
|
||||
|
||||
if (( ! empty($data['mal_id'])) && $this->anilistEnabled)
|
||||
if ($this->anilistEnabled && (isset($data['anilist_id']) || isset($data['mal_id'])))
|
||||
{
|
||||
// If can't map MAL id, this will be null
|
||||
$maybeRequest = $this->anilistModel->updateListItem($data, strtoupper($this->type));
|
||||
@ -174,6 +174,26 @@ trait MediaTrait
|
||||
];
|
||||
}
|
||||
|
||||
public function deleteItem(FormItem $data): bool
|
||||
{
|
||||
$requester = new ParallelAPIRequest();
|
||||
$requester->addRequest($this->kitsuModel->deleteItem($data), 'kitsu');
|
||||
|
||||
if ($this->anilistEnabled && (isset($data['anilist_id']) || isset($data['mal_id'])))
|
||||
{
|
||||
// If can't map MAL id, this will be null
|
||||
$maybeRequest = $this->anilistModel->deleteItem($data, strtoupper($this->type));
|
||||
if ($maybeRequest !== NULL)
|
||||
{
|
||||
$requester->addRequest($maybeRequest, 'anilist');
|
||||
}
|
||||
}
|
||||
|
||||
$results = $requester->makeRequests();
|
||||
|
||||
return $results !== [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a list entry
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user