0.1.1
This commit is contained in:
@@ -37,5 +37,4 @@ class Timezones
|
||||
return $tzForSelect;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ class AuthenticatedSessionController extends Controller
|
||||
|
||||
$request->session()->regenerate();
|
||||
|
||||
return redirect()->intended(route('dashboard', absolute: false));
|
||||
return redirect()->intended(route('comics.index'));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -36,6 +36,6 @@ class ConfirmablePasswordController extends Controller
|
||||
|
||||
$request->session()->put('auth.password_confirmed_at', time());
|
||||
|
||||
return redirect()->intended(route('dashboard', absolute: false));
|
||||
return redirect()->intended(route('comics.index'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ class EmailVerificationNotificationController extends Controller
|
||||
public function store(Request $request): RedirectResponse
|
||||
{
|
||||
if ($request->user()->hasVerifiedEmail()) {
|
||||
return redirect()->intended(route('dashboard', absolute: false));
|
||||
return redirect()->intended(route('comics.index'));
|
||||
}
|
||||
|
||||
$request->user()->sendEmailVerificationNotification();
|
||||
|
||||
@@ -16,7 +16,7 @@ class EmailVerificationPromptController extends Controller
|
||||
public function __invoke(Request $request): RedirectResponse|Response
|
||||
{
|
||||
return $request->user()->hasVerifiedEmail()
|
||||
? redirect()->intended(route('dashboard', absolute: false))
|
||||
? redirect()->intended(route('comics.index'))
|
||||
: Inertia::render('Auth/VerifyEmail', ['status' => session('status')]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,6 +48,6 @@ class RegisteredUserController extends Controller
|
||||
|
||||
Auth::login($user);
|
||||
|
||||
return redirect(route('dashboard', absolute: false));
|
||||
return redirect(route('comics.index'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,13 +15,13 @@ class VerifyEmailController extends Controller
|
||||
public function __invoke(EmailVerificationRequest $request): RedirectResponse
|
||||
{
|
||||
if ($request->user()->hasVerifiedEmail()) {
|
||||
return redirect()->intended(route('dashboard', absolute: false).'?verified=1');
|
||||
return redirect()->intended(route('comics.index'));
|
||||
}
|
||||
|
||||
if ($request->user()->markEmailAsVerified()) {
|
||||
event(new Verified($request->user()));
|
||||
}
|
||||
|
||||
return redirect()->intended(route('dashboard', absolute: false).'?verified=1');
|
||||
return redirect()->intended(route('comics.index'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,8 +64,8 @@ class ComicController extends Controller
|
||||
public function postFavourite(Request $request): JsonResponse
|
||||
{
|
||||
try {
|
||||
// Get pathname to comic_id
|
||||
$comic = Comic::where('pathword', $request->pathword)->firstOrFail();
|
||||
// Get pathname to comic_id, if metadata is null, also do fetching
|
||||
$comic = Comic::where('pathword', $request->pathword)->whereNotNull('metadata')->firstOrFail();
|
||||
} catch (ModelNotFoundException $e) {
|
||||
// Fetch from remote
|
||||
$remoteComic = $this->copyManga->comic($request->pathword);
|
||||
@@ -345,9 +345,13 @@ class ComicController extends Controller
|
||||
// Update history
|
||||
$request->user()->readingHistories()->attach($chapterObj->id, ['comic_id' => $comicObj->id]);
|
||||
|
||||
// Get chapters from DB
|
||||
$chapters = $comicObj->chapters()->where('metadata->group_path_word', $chapter['chapter']['group_path_word'])->orderBy('order')->get(['name', 'chapter_uuid']);
|
||||
|
||||
return Inertia::render('Comic/Read', [
|
||||
'comic' => $this->scToZh($comic),
|
||||
'chapter' => $this->scToZh($chapter),
|
||||
'chapters' => $this->scToZh($chapters),
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -385,6 +389,13 @@ class ComicController extends Controller
|
||||
return redirect()->route('comics.histories');
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove histories for specified comic
|
||||
*
|
||||
* @param Request $request
|
||||
* @param string $pathword
|
||||
* @return Response
|
||||
*/
|
||||
public function destroyHistory(Request $request, string $pathword): Response
|
||||
{
|
||||
$comicId = Comic::where('pathword', $pathword)->firstOrFail(['id'])->id;
|
||||
@@ -399,6 +410,12 @@ class ComicController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove duplicated records
|
||||
*
|
||||
* @param Request $request
|
||||
* @return RedirectResponse
|
||||
*/
|
||||
public function destroyHistories(Request $request): RedirectResponse
|
||||
{
|
||||
$result = $request->user()->cleanUpReadingHistories();
|
||||
|
||||
@@ -43,7 +43,6 @@ class ProfileController extends Controller
|
||||
$settings = $request->user()->settings;
|
||||
$settings['timezone'] = $request->get('timezone');
|
||||
$request->user()->settings = $settings;
|
||||
$request->user()->save();
|
||||
|
||||
$request->user()->save();
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ class ProfileUpdateRequest extends FormRequest
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array<string, ValidationRule|array<mixed>|string>
|
||||
* @return array<string, ValidationRule|array|string>
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
|
||||
@@ -71,13 +71,11 @@ class User extends Authenticatable implements MustVerifyEmail
|
||||
$userId = $this->id;
|
||||
|
||||
// Step 1: Identify records to keep
|
||||
$idsToKeep = ReadingHistory::query()
|
||||
->select('reading_histories.id') // Specify table name explicitly
|
||||
$idsToKeep = ReadingHistory::query()->select('reading_histories.id')
|
||||
->joinSub(
|
||||
ReadingHistory::query()
|
||||
->select('comic_id', 'user_id', 'chapter_id', DB::raw('MIN(created_at) as earliest_created_at'))
|
||||
->where('user_id', $userId) // Specify user_id with table name
|
||||
->groupBy('comic_id', 'user_id', 'chapter_id'),
|
||||
->where('user_id', $userId)->groupBy('comic_id', 'user_id', 'chapter_id'),
|
||||
'b',
|
||||
function (JoinClause $join) {
|
||||
$join->on('reading_histories.comic_id', '=', 'b.comic_id')
|
||||
@@ -85,14 +83,10 @@ class User extends Authenticatable implements MustVerifyEmail
|
||||
->on('reading_histories.chapter_id', '=', 'b.chapter_id')
|
||||
->on('reading_histories.created_at', '=', 'b.earliest_created_at');
|
||||
}
|
||||
)
|
||||
->where('reading_histories.user_id', $userId) // Specify table name explicitly
|
||||
->pluck('id');
|
||||
)->where('reading_histories.user_id', $userId)->pluck('id');
|
||||
|
||||
// Step 2: Delete duplicates for the user
|
||||
$deletedCount = ReadingHistory::where('user_id', $userId)
|
||||
->whereNotIn('id', $idsToKeep)
|
||||
->delete();
|
||||
$deletedCount = ReadingHistory::where('user_id', $userId)->whereNotIn('id', $idsToKeep)->delete();
|
||||
|
||||
// Return the result as an array
|
||||
return [
|
||||
|
||||
Reference in New Issue
Block a user