Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
ecf8957
faces
timonrieger Jan 10, 2026
05f87b5
add openapi descriptions
timonrieger Jan 10, 2026
e23e192
remove dto descriptions
timonrieger Jan 10, 2026
b6af964
gen openapi
timonrieger Jan 10, 2026
2d402fa
dtos
timonrieger Jan 10, 2026
858d9a0
fix dtos
timonrieger Jan 10, 2026
003dcda
fix more
timonrieger Jan 10, 2026
90606db
fix build
timonrieger Jan 10, 2026
989064f
more
timonrieger Jan 10, 2026
21c6482
complete dtos
timonrieger Jan 10, 2026
2a9b645
descriptions on rebase
timonrieger Jan 10, 2026
bf34f37
gen rebase
timonrieger Jan 10, 2026
a06d32d
revert correct integer type conversion
timonrieger Jan 10, 2026
a658e98
gen after revert
timonrieger Jan 10, 2026
447989b
revert correct nullables
timonrieger Jan 10, 2026
d9955b2
regen after revert
timonrieger Jan 10, 2026
654dc59
actually incorrect adding default here
timonrieger Jan 10, 2026
317cdf9
revert correct number type conversion
timonrieger Jan 10, 2026
632952a
regen after revert
timonrieger Jan 10, 2026
e092e8f
revert nullable usage
timonrieger Jan 10, 2026
3321b85
regen fully
timonrieger Jan 10, 2026
e56ea94
readd some comments
timonrieger Jan 10, 2026
6e4fd49
one more
timonrieger Jan 10, 2026
4b0da47
one more
timonrieger Jan 10, 2026
de5affd
use enum
timonrieger Jan 10, 2026
da9186f
add missing
timonrieger Jan 10, 2026
5f8c26c
add missing controllers
timonrieger Jan 10, 2026
581c441
add missing dtos
timonrieger Jan 10, 2026
5e44b13
complete it
timonrieger Jan 10, 2026
59105a5
more
timonrieger Jan 10, 2026
a3dbd51
describe global key and slug
timonrieger Jan 10, 2026
5ec29d5
add remaining body and param descriptions
timonrieger Jan 10, 2026
678c3ee
lint and format
timonrieger Jan 10, 2026
3141b72
cleanup
timonrieger Jan 10, 2026
b766d14
response and schema descriptions
timonrieger Jan 10, 2026
016edd4
test patch according to suggestion
timonrieger Jan 11, 2026
b484d1e
revert added api response objects
timonrieger Jan 24, 2026
d2551e6
revert added api body objects
timonrieger Jan 24, 2026
cf23f19
revert added api param object
timonrieger Jan 24, 2026
bcbf510
revert added api query objects
timonrieger Jan 24, 2026
ad12aa0
revert reorganized http code objects
timonrieger Jan 24, 2026
b22d671
revert reorganize ApiOkResponse objects
timonrieger Jan 24, 2026
2dc99ce
revert added api response objects (2)
timonrieger Jan 24, 2026
69d45a3
revert added api tag object
timonrieger Jan 24, 2026
c3fd8eb
revert added api schema objects
timonrieger Jan 24, 2026
988bb2f
migrate missing asset.dto.ts
timonrieger Jan 24, 2026
c52bf7a
regenerate openapi builds
timonrieger Jan 24, 2026
e664da3
delete generated mustache files
timonrieger Jan 24, 2026
6613463
remove descriptions from properties that are schemas
timonrieger Jan 24, 2026
9112b3a
lint
timonrieger Jan 24, 2026
c6553cf
revert nullable type changes
timonrieger Jan 27, 2026
feb1ca9
revert int/num type changes
timonrieger Jan 27, 2026
2bddf04
remove explicit default
timonrieger Jan 27, 2026
a699571
readd comment
timonrieger Jan 27, 2026
6fd269c
lint
timonrieger Jan 27, 2026
5efa9c5
pr fixes
timonrieger Jan 27, 2026
d161556
last bits and pieces
timonrieger Jan 27, 2026
0a8d54d
lint and format
timonrieger Jan 27, 2026
af8562e
chore: remove rejected patches
jrasm91 Jan 28, 2026
c695640
fix: deleting asset from asset-viewer on search results (#25596)
midzelis Jan 28, 2026
ffa481b
fix: escape handling in search asset viewer (#25621)
danieldietzler Jan 28, 2026
6a2fd87
fix: correctly show owner in album options modal (#25618)
danieldietzler Jan 28, 2026
b1efe89
fix: validation issues
insertish Jan 28, 2026
c8e7a86
fix: validation issues
jrasm91 Jan 28, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
116 changes: 116 additions & 0 deletions e2e/src/web/specs/search/search-gallery.ui-spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
import { faker } from '@faker-js/faker';
import { expect, test } from '@playwright/test';
import {
Changes,
createDefaultTimelineConfig,
generateTimelineData,
TimelineAssetConfig,
TimelineData,
} from 'src/generators/timeline';
import { setupBaseMockApiRoutes } from 'src/mock-network/base-network';
import { setupTimelineMockApiRoutes, TimelineTestContext } from 'src/mock-network/timeline-network';
import { assetViewerUtils } from 'src/web/specs/timeline/utils';

const buildSearchUrl = (assetId: string) => {
const searchQuery = encodeURIComponent(JSON.stringify({ originalFileName: 'test' }));
return `/search/photos/${assetId}?query=${searchQuery}`;
};

test.describe.configure({ mode: 'parallel' });
test.describe('search gallery-viewer', () => {
let adminUserId: string;
let timelineRestData: TimelineData;
const assets: TimelineAssetConfig[] = [];
const testContext = new TimelineTestContext();
const changes: Changes = {
albumAdditions: [],
assetDeletions: [],
assetArchivals: [],
assetFavorites: [],
};

test.beforeAll(async () => {
adminUserId = faker.string.uuid();
testContext.adminId = adminUserId;
timelineRestData = generateTimelineData({ ...createDefaultTimelineConfig(), ownerId: adminUserId });
for (const timeBucket of timelineRestData.buckets.values()) {
assets.push(...timeBucket);
}
});

test.beforeEach(async ({ context }) => {
await setupBaseMockApiRoutes(context, adminUserId);
await setupTimelineMockApiRoutes(context, timelineRestData, changes, testContext);

await context.route('**/api/search/metadata', async (route, request) => {
if (request.method() === 'POST') {
const searchAssets = assets.slice(0, 5).filter((asset) => !changes.assetDeletions.includes(asset.id));
return route.fulfill({
status: 200,
contentType: 'application/json',
json: {
albums: { total: 0, count: 0, items: [], facets: [] },
assets: {
total: searchAssets.length,
count: searchAssets.length,
items: searchAssets,
facets: [],
nextPage: null,
},
},
});
}
await route.fallback();
});
});

test.afterEach(() => {
testContext.slowBucket = false;
changes.albumAdditions = [];
changes.assetDeletions = [];
changes.assetArchivals = [];
changes.assetFavorites = [];
});

test.describe('/search/photos/:id', () => {
test('Deleting a photo advances to the next photo', async ({ page }) => {
const asset = assets[0];
await page.goto(buildSearchUrl(asset.id));
await assetViewerUtils.waitForViewerLoad(page, asset);
await page.getByLabel('Delete').click();
await assetViewerUtils.waitForViewerLoad(page, assets[1]);
});

test('Deleting two photos in a row advances to the next photo each time', async ({ page }) => {
const asset = assets[0];
await page.goto(buildSearchUrl(asset.id));
await assetViewerUtils.waitForViewerLoad(page, asset);
await page.getByLabel('Delete').click();
await assetViewerUtils.waitForViewerLoad(page, assets[1]);
await page.getByLabel('Delete').click();
await assetViewerUtils.waitForViewerLoad(page, assets[2]);
});

test('Navigating backward then deleting advances to the next photo', async ({ page }) => {
const asset = assets[1];
await page.goto(buildSearchUrl(asset.id));
await assetViewerUtils.waitForViewerLoad(page, asset);
await page.getByLabel('View previous asset').click();
await assetViewerUtils.waitForViewerLoad(page, assets[0]);
await page.getByLabel('View next asset').click();
await assetViewerUtils.waitForViewerLoad(page, asset);
await page.getByLabel('Delete').click();
await assetViewerUtils.waitForViewerLoad(page, assets[2]);
});

test('Deleting the last photo advances to the previous photo', async ({ page }) => {
const lastAsset = assets[4];
await page.goto(buildSearchUrl(lastAsset.id));
await assetViewerUtils.waitForViewerLoad(page, lastAsset);
await expect(page.getByLabel('View next asset')).toHaveCount(0);
await page.getByLabel('Delete').click();
await assetViewerUtils.waitForViewerLoad(page, assets[3]);
await expect(page.getByLabel('View previous asset')).toBeVisible();
});
});
});
14 changes: 14 additions & 0 deletions mobile/openapi/lib/api/activities_api.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 6 additions & 2 deletions mobile/openapi/lib/api/albums_api.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading