mirror of
https://github.com/ivabus/gui
synced 2025-06-07 15:50:27 +03:00
Merge pull request #139 from teaxyz/more-like-this-component
#138 SuggestedPackages component
This commit is contained in:
commit
3e38c231fa
4 changed files with 72 additions and 1 deletions
2
.github/workflows/main.yml
vendored
2
.github/workflows/main.yml
vendored
|
@ -40,6 +40,7 @@ jobs:
|
|||
- name: build tauri for Linux
|
||||
if: startsWith(matrix.platform.name, 'linux')
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libappindicator3-dev librsvg2-dev patchelf pkg-config
|
||||
sh <(curl https://tea.xyz) build
|
||||
|
||||
|
@ -84,6 +85,7 @@ jobs:
|
|||
if: startsWith(matrix.platform.name, 'linux')
|
||||
# TODO: https://tauri.app/v1/guides/distribution/sign-linux
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libappindicator3-dev librsvg2-dev patchelf pkg-config
|
||||
sh <(curl https://tea.xyz) build
|
||||
|
||||
|
|
1
.github/workflows/release.yml
vendored
1
.github/workflows/release.yml
vendored
|
@ -55,6 +55,7 @@ jobs:
|
|||
if: startsWith(matrix.platform.name, 'linux')
|
||||
# TODO: https://tauri.app/v1/guides/distribution/sign-linux
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libappindicator3-dev librsvg2-dev patchelf pkg-config
|
||||
sh <(curl https://tea.xyz) build
|
||||
|
||||
|
|
|
@ -0,0 +1,63 @@
|
|||
<script lang="ts">
|
||||
import '$appcss';
|
||||
import type { GUIPackage } from '$libs/types';
|
||||
import type { Package } from '@tea/ui/types';
|
||||
import { PackageStates } from '$libs/types';
|
||||
import Preloader from '@tea/ui/Preloader/Preloader.svelte';
|
||||
import PackageCard from '@tea/ui/PackageCard/PackageCard.svelte';
|
||||
import { onMount } from 'svelte';
|
||||
import { installPackage } from '@api';
|
||||
import { packagesStore } from '$libs/stores';
|
||||
|
||||
export let pkg: Package;
|
||||
|
||||
let packages: GUIPackage[] = [];
|
||||
|
||||
const getCTALabel = (state: PackageStates): string => {
|
||||
return {
|
||||
[PackageStates.AVAILABLE]: 'INSTALL',
|
||||
[PackageStates.INSTALLED]: 'INSTALLED',
|
||||
[PackageStates.INSTALLING]: 'INSTALLING',
|
||||
[PackageStates.UNINSTALLED]: 'RE-INSTALL'
|
||||
}[state];
|
||||
};
|
||||
|
||||
onMount(async () => {
|
||||
if (!packages.length) {
|
||||
const matches = await packagesStore.search(pkg.desc, 4);
|
||||
packages = matches.filter((mp) => mp.full_name !== pkg.full_name).slice(0, 3);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<header class="flex items-center justify-between border border-gray bg-black p-4 text-primary">
|
||||
<span>MORE LIKE THIS</span>
|
||||
</header>
|
||||
<ul class="grid grid-cols-3 bg-black">
|
||||
{#if packages.length > 0}
|
||||
{#each packages as pkg}
|
||||
<div class={pkg.state === PackageStates.INSTALLING ? 'animate-pulse' : ''}>
|
||||
<PackageCard
|
||||
{pkg}
|
||||
link={`/packages/${pkg.slug}`}
|
||||
ctaLabel={getCTALabel(pkg.state)}
|
||||
onClickCTA={async () => {
|
||||
try {
|
||||
pkg.state = PackageStates.INSTALLING;
|
||||
await installPackage(pkg.full_name);
|
||||
pkg.state = PackageStates.INSTALLED;
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
{/each}
|
||||
{:else}
|
||||
{#each Array(9) as _}
|
||||
<section class="h-50 border border-gray p-4">
|
||||
<Preloader />
|
||||
</section>
|
||||
{/each}
|
||||
{/if}
|
||||
</ul>
|
|
@ -5,7 +5,7 @@
|
|||
import PackageBanner from '$components/PackageBanner/PackageBanner.svelte';
|
||||
import PackageReviews from '$components/PackageReviews/PackageReviews.svelte';
|
||||
import type { Review } from '@tea/ui/types';
|
||||
|
||||
import SuggestedPackages from '$components/SuggestedPackages/SuggestedPackages.svelte';
|
||||
navStore.set('/packages');
|
||||
|
||||
/** @type {import('./$types').PageData} */
|
||||
|
@ -44,4 +44,9 @@
|
|||
<section class="mt-8">
|
||||
<PackageReviews reviews={reviews || []} />
|
||||
</section>
|
||||
{#if pkg}
|
||||
<section class="mt-8">
|
||||
<SuggestedPackages {pkg} />
|
||||
</section>
|
||||
{/if}
|
||||
</div>
|
||||
|
|
Loading…
Reference in a new issue