fix(manga): show force-resync result on mobile, not just desktop #18
2
backend/Cargo.lock
generated
2
backend/Cargo.lock
generated
@@ -1517,7 +1517,7 @@ checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mangalord"
|
name = "mangalord"
|
||||||
version = "0.88.0"
|
version = "0.88.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"argon2",
|
"argon2",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "mangalord"
|
name = "mangalord"
|
||||||
version = "0.88.0"
|
version = "0.88.1"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
default-run = "mangalord"
|
default-run = "mangalord"
|
||||||
|
|
||||||
|
|||||||
@@ -236,6 +236,51 @@ test.describe('mobile manga detail', () => {
|
|||||||
await expect(sheet.getByTestId('overflow-add-to-collection')).toBeVisible();
|
await expect(sheet.getByTestId('overflow-add-to-collection')).toBeVisible();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('phone viewport: force resync from the overflow sheet surfaces a result message', async ({
|
||||||
|
page
|
||||||
|
}) => {
|
||||||
|
await mockDetail(page, { authed: true });
|
||||||
|
// Upgrade the session to admin so the Force resync action is offered.
|
||||||
|
// Registered after mockDetail so this auth/me wins (Playwright routes
|
||||||
|
// resolve most-recently-registered first).
|
||||||
|
await page.route('**/api/v1/auth/me', (route) =>
|
||||||
|
route.fulfill({
|
||||||
|
status: 200,
|
||||||
|
contentType: 'application/json',
|
||||||
|
body: JSON.stringify({
|
||||||
|
user: {
|
||||||
|
id: 'u1',
|
||||||
|
username: 'admin',
|
||||||
|
created_at: '2026-01-01T00:00:00Z',
|
||||||
|
is_admin: true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
);
|
||||||
|
await page.route(`**/api/v1/admin/mangas/${mangaId}/resync`, (route) =>
|
||||||
|
route.fulfill({
|
||||||
|
status: 200,
|
||||||
|
contentType: 'application/json',
|
||||||
|
body: JSON.stringify({
|
||||||
|
manga: mangaFixture(),
|
||||||
|
cover_fetched: true,
|
||||||
|
metadata_status: 'updated'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
);
|
||||||
|
await page.setViewportSize(MOBILE);
|
||||||
|
await page.goto(`/manga/${mangaId}`);
|
||||||
|
|
||||||
|
await page.getByTestId('detail-overflow').click();
|
||||||
|
await page.getByTestId('overflow-force-resync').click();
|
||||||
|
|
||||||
|
// The result was previously display:none under 640px, leaving mobile
|
||||||
|
// admins with no feedback. It must now be visible.
|
||||||
|
const msg = page.getByTestId('force-resync-message');
|
||||||
|
await expect(msg).toBeVisible();
|
||||||
|
await expect(msg).toContainText(/Metadata updated/i);
|
||||||
|
});
|
||||||
|
|
||||||
test('desktop viewport: mobile hero is hidden, existing layout + action-row stays', async ({
|
test('desktop viewport: mobile hero is hidden, existing layout + action-row stays', async ({
|
||||||
page
|
page
|
||||||
}) => {
|
}) => {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "mangalord-frontend",
|
"name": "mangalord-frontend",
|
||||||
"version": "0.88.0",
|
"version": "0.88.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -1243,9 +1243,9 @@
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.resync-msg {
|
/* `.resync-msg` is a sibling of `.action-row`, not a child, so it
|
||||||
display: none;
|
survives the row being hidden. Keep it visible on mobile: admins
|
||||||
}
|
trigger Force resync from the overflow sheet and need the result. */
|
||||||
|
|
||||||
.continue {
|
.continue {
|
||||||
display: none;
|
display: none;
|
||||||
|
|||||||
Reference in New Issue
Block a user