Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

init #300

Closed
wants to merge 1 commit into from
Closed

init #300

Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 46 additions & 6 deletions src/lib/ui/ExtensionsList.svelte
Original file line number Diff line number Diff line change
@@ -1,13 +1,53 @@
<script lang="ts">
import type { ExtensionByCategoryInfo } from '$lib/api/extensions-info';

import type { ExtensionByCategoryInfo, CatalogExtensionInfo } from '$lib/api/extensions-info';

Check failure on line 2 in src/lib/ui/ExtensionsList.svelte

View workflow job for this annotation

GitHub Actions / build, linter, formatters and unit tests / windows-2022

Run autofix to sort these imports!

Check failure on line 2 in src/lib/ui/ExtensionsList.svelte

View workflow job for this annotation

GitHub Actions / build, linter, formatters and unit tests / ubuntu-24.04

Run autofix to sort these imports!

Check failure on line 2 in src/lib/ui/ExtensionsList.svelte

View workflow job for this annotation

GitHub Actions / build, linter, formatters and unit tests / macos-15

Run autofix to sort these imports!
import ExtensionsByCategory from './ExtensionsByCategory.svelte';
import ExtensionByCategoryCard from './ExtensionByCategoryCard.svelte';

export let extensionsByCategories: ExtensionByCategoryInfo[];

let filteredExtensions: CatalogExtensionInfo[] = [];
let showCategories = true;

// Get the query from the URL
function getQueryLimit(): number | null {
const query = new URLSearchParams(window.location.search).get('query');
return query ? parseInt(query, 10) : null;
}

// Sort extensions based upon the last updated date based upon what's in .versions array
function getSortedExtensions(extensions: CatalogExtensionInfo[]): CatalogExtensionInfo[] {
return extensions.sort((a, b) => {

Check failure on line 19 in src/lib/ui/ExtensionsList.svelte

View workflow job for this annotation

GitHub Actions / build, linter, formatters and unit tests / windows-2022

Assignment of mutated arrays is forbidden

Check failure on line 19 in src/lib/ui/ExtensionsList.svelte

View workflow job for this annotation

GitHub Actions / build, linter, formatters and unit tests / ubuntu-24.04

Assignment of mutated arrays is forbidden

Check failure on line 19 in src/lib/ui/ExtensionsList.svelte

View workflow job for this annotation

GitHub Actions / build, linter, formatters and unit tests / macos-15

Assignment of mutated arrays is forbidden
const aLastUpdated = a.versions?.[a.versions.length - 1]?.lastUpdated ?? 0;
const bLastUpdated = b.versions?.[b.versions.length - 1]?.lastUpdated ?? 0;
return Number(bLastUpdated) - Number(aLastUpdated);
});
}

$: {
const limit = getQueryLimit();
showCategories = !limit;

const { extensionsByCategories }: { extensionsByCategories: ExtensionByCategoryInfo[] } = $props();
if (limit) {
const allExtensions = extensionsByCategories.flatMap(({ extensions }) => extensions);
filteredExtensions = getSortedExtensions(allExtensions).slice(0, limit);
}
}
</script>

<div class="flex flex-col h-full">
{#each extensionsByCategories as extensionByCategoryInfo}
<ExtensionsByCategory {extensionByCategoryInfo} />
{/each}
{#if showCategories}
{#each extensionsByCategories as extensionByCategoryInfo}
<ExtensionsByCategory {extensionByCategoryInfo} />
{/each}
{:else}
<div
class="mt-2 grid min-[920px]:grid-cols-2 min-[1180px]:grid-cols-3 gap-3"
role="region"
aria-label="Queried extensions"
>
{#each filteredExtensions as extension}
<ExtensionByCategoryCard {extension} />
{/each}
</div>
{/if}
</div>
Loading