- created rss feed component
- initiated vercel and updated workflows.
This commit is contained in:
parent
1610c9aba5
commit
8b03312ac0
21
.gitea/workflows/vercel-preview.yaml
Normal file
21
.gitea/workflows/vercel-preview.yaml
Normal file
@ -0,0 +1,21 @@
|
||||
name: Vercel Preview Deployment
|
||||
env:
|
||||
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
|
||||
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
|
||||
on:
|
||||
push:
|
||||
branches-ignore:
|
||||
- main
|
||||
jobs:
|
||||
Deploy-Preview:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Install Vercel CLI
|
||||
run: npm install --global vercel@latest
|
||||
- name: Pull Vercel Environment Information
|
||||
run: vercel pull --yes --environment=preview --token=${{ secrets.VERCEL_TOKEN }}
|
||||
- name: Build Project Artifacts
|
||||
run: vercel build --token=${{ secrets.VERCEL_TOKEN }}
|
||||
- name: Deploy Project Artifacts to Vercel
|
||||
run: vercel deploy --prebuilt --token=${{ secrets.VERCEL_TOKEN }}
|
21
.gitea/workflows/vercel-production.yaml
Normal file
21
.gitea/workflows/vercel-production.yaml
Normal file
@ -0,0 +1,21 @@
|
||||
name: Vercel Production Deployment
|
||||
env:
|
||||
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
|
||||
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
jobs:
|
||||
Deploy-Production:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Install Vercel CLI
|
||||
run: npm install --global vercel@latest
|
||||
- name: Pull Vercel Environment Information
|
||||
run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }}
|
||||
- name: Build Project Artifacts
|
||||
run: vercel build --prod --token=${{ secrets.VERCEL_TOKEN }}
|
||||
- name: Deploy Project Artifacts to Vercel
|
||||
run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }}
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -8,3 +8,4 @@ node_modules
|
||||
!.env.example
|
||||
vite.config.js.timestamp-*
|
||||
vite.config.ts.timestamp-*
|
||||
.vercel
|
||||
|
48
src/routes/_components/RssFeed.svelte
Normal file
48
src/routes/_components/RssFeed.svelte
Normal file
@ -0,0 +1,48 @@
|
||||
<script>
|
||||
import { onMount } from 'svelte';
|
||||
|
||||
const url = 'https://gitea.rannes.dev/rannes.dev/local-weather.rss';
|
||||
|
||||
let feed = null;
|
||||
let error = null;
|
||||
|
||||
async function fetchFeed() {
|
||||
try {
|
||||
const response = await fetch(url);
|
||||
if (!response.ok) {
|
||||
throw new Error(`HTTP error! status: ${response.status}`);
|
||||
}
|
||||
const text = await response.text();
|
||||
const parser = new DOMParser();
|
||||
const xml = parser.parseFromString(text, 'application/xml');
|
||||
const items = Array.from(xml.querySelectorAll('item')).map((item) => ({
|
||||
title: item.querySelector('title')?.textContent,
|
||||
link: item.querySelector('link')?.textContent,
|
||||
description: item.querySelector('description')?.textContent
|
||||
}));
|
||||
feed = items;
|
||||
} catch (err) {
|
||||
error = err.message;
|
||||
}
|
||||
}
|
||||
|
||||
onMount(() => {
|
||||
fetchFeed();
|
||||
});
|
||||
</script>
|
||||
|
||||
{#if error}
|
||||
<p>Error: {error}</p>
|
||||
{:else if !feed}
|
||||
<p>Loading...</p>
|
||||
{:else}
|
||||
<div>
|
||||
{#each feed as item}
|
||||
<div>
|
||||
<h3>{item.title}</h3>
|
||||
<p>{item.description}</p>
|
||||
<a href={item.link} target="_blank">Read more</a>
|
||||
</div>
|
||||
{/each}
|
||||
</div>
|
||||
{/if}
|
@ -1,5 +1,6 @@
|
||||
<script>
|
||||
import { fade } from 'svelte/transition';
|
||||
import RssFeed from '../_components/RssFeed.svelte';
|
||||
</script>
|
||||
|
||||
<div in:fade>
|
||||
|
Loading…
Reference in New Issue
Block a user