19 Commits
0.2.0 ... 0.3.0

Author SHA1 Message Date
5f81f55987 🚀RELEASE 0.3.0
All checks were successful
continuous-integration/drone/push Build is passing
2021-08-21 10:19:12 +02:00
8bcab4661b Added safeguard for random updates 2021-08-21 10:18:47 +02:00
f2ec82762e Fixed link to details 2021-08-21 10:17:52 +02:00
0327bdc7a0 Enabled y scrolling (whyever that was disabled...) 2021-08-21 10:17:02 +02:00
b3b6731c09 Fixed typo in visits query 2021-08-21 10:15:39 +02:00
36de0a3eb3 Added visits overview to sidebar 2021-08-21 10:13:37 +02:00
839c658075 Added apiclient method 2021-08-21 10:12:06 +02:00
12aa8eeb3e Missing copy-paste :D 2021-08-21 10:11:05 +02:00
b655ff2372 Added new "visits" page 2021-08-21 10:10:51 +02:00
58adc6511a 🚀RELEASE 0.2.4
All checks were successful
continuous-integration/drone/push Build is passing
2021-08-21 09:30:20 +02:00
29c4b0013a Fixed logout redirect 2021-08-21 09:30:02 +02:00
8ed16adeff Fixed details link 2021-08-21 09:29:31 +02:00
09219ff798 🚀RELEASE 0.2.3
All checks were successful
continuous-integration/drone/push Build is passing
2021-08-21 09:23:02 +02:00
d9cd552c89 Updated login text color 2021-08-21 09:22:48 +02:00
2b82f8798c Fixed login replace 2021-08-21 09:22:01 +02:00
d9715139cf 🚀RELEASE 0.2.2
All checks were successful
continuous-integration/drone/push Build is passing
2021-08-21 09:17:36 +02:00
c731323b0b Fixxed routing links 2021-08-21 09:17:26 +02:00
0d8db9f41f 🚀RELEASE 0.2.1
Some checks failed
continuous-integration/drone/push Build is failing
2021-08-21 09:12:55 +02:00
6706c9b0d1 Static links (yay) 2021-08-21 09:12:37 +02:00
9 changed files with 166 additions and 12 deletions

View File

@@ -2,13 +2,57 @@
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
#### [0.3.0](https://git.odit.services/kauft.es/linkylinky-dashboard/compare/0.2.4...0.3.0)
- Added new "visits" page [`b655ff2`](https://git.odit.services/kauft.es/linkylinky-dashboard/commit/b655ff2372655d1fb7fa6cea8a10b193805f315c)
- Added visits overview to sidebar [`36de0a3`](https://git.odit.services/kauft.es/linkylinky-dashboard/commit/36de0a3eb305317c829bace18a9661308c8cf0f3)
- Added apiclient method [`839c658`](https://git.odit.services/kauft.es/linkylinky-dashboard/commit/839c65807524646c1c6a677f10042988fb2bccdf)
- Added safeguard for random updates [`8bcab46`](https://git.odit.services/kauft.es/linkylinky-dashboard/commit/8bcab4661bec3c748cc65078e5187d936be9cdf9)
- Fixed link to details [`f2ec827`](https://git.odit.services/kauft.es/linkylinky-dashboard/commit/f2ec82762e9bc107f29952709555bc3d893def49)
- Enabled y scrolling (whyever that was disabled...) [`0327bdc`](https://git.odit.services/kauft.es/linkylinky-dashboard/commit/0327bdc7a0cefda343168c911faa51cd42271673)
- Fixed typo in visits query [`b3b6731`](https://git.odit.services/kauft.es/linkylinky-dashboard/commit/b3b6731c09d47fff9df96903c75914e7042e28c5)
- Missing copy-paste :D [`12aa8ee`](https://git.odit.services/kauft.es/linkylinky-dashboard/commit/12aa8eeb3e345ccee10bdb6abca93c5fd84a071a)
#### [0.2.4](https://git.odit.services/kauft.es/linkylinky-dashboard/compare/0.2.3...0.2.4)
> 21 August 2021
- 🚀RELEASE 0.2.4 [`58adc65`](https://git.odit.services/kauft.es/linkylinky-dashboard/commit/58adc6511aa1ee573abcf21a176131bf10354747)
- Fixed logout redirect [`29c4b00`](https://git.odit.services/kauft.es/linkylinky-dashboard/commit/29c4b0013abb0466f59239ae3717f60216cecc1f)
- Fixed details link [`8ed16ad`](https://git.odit.services/kauft.es/linkylinky-dashboard/commit/8ed16adeffed9e1368615caf6022d8a376337b8a)
#### [0.2.3](https://git.odit.services/kauft.es/linkylinky-dashboard/compare/0.2.2...0.2.3)
> 21 August 2021
- 🚀RELEASE 0.2.3 [`09219ff`](https://git.odit.services/kauft.es/linkylinky-dashboard/commit/09219ff7987e6088245d8a871e3a5aaca3f855fd)
- Updated login text color [`d9cd552`](https://git.odit.services/kauft.es/linkylinky-dashboard/commit/d9cd552c89415625c22c1adcb892c5a789823ce9)
- Fixed login replace [`2b82f87`](https://git.odit.services/kauft.es/linkylinky-dashboard/commit/2b82f8798cd23f15dc48a5375dc1f5ad1a3abbfd)
#### [0.2.2](https://git.odit.services/kauft.es/linkylinky-dashboard/compare/0.2.1...0.2.2)
> 21 August 2021
- 🚀RELEASE 0.2.2 [`d971513`](https://git.odit.services/kauft.es/linkylinky-dashboard/commit/d9715139cf0c5583cb1db43953c34e3293345f68)
- Fixxed routing links [`c731323`](https://git.odit.services/kauft.es/linkylinky-dashboard/commit/c731323b0bd1b757297b601e7bbc3f5034c04e9c)
#### [0.2.1](https://git.odit.services/kauft.es/linkylinky-dashboard/compare/0.2.0...0.2.1)
> 21 August 2021
- 🚀RELEASE 0.2.1 [`0d8db9f`](https://git.odit.services/kauft.es/linkylinky-dashboard/commit/0d8db9f41f84ccaba3211d61e6521d57f43e1b88)
- Static links (yay) [`6706c9b`](https://git.odit.services/kauft.es/linkylinky-dashboard/commit/6706c9b0d1e396b0c6df6bb9b05d2d25c2a45cba)
#### [0.2.0](https://git.odit.services/kauft.es/linkylinky-dashboard/compare/0.1.3...0.2.0)
> 21 August 2021
- Added comments to fix [`#1`](https://git.odit.services/kauft.es/linkylinky-dashboard/issues/1)
- More userstore fixes [`84ab757`](https://git.odit.services/kauft.es/linkylinky-dashboard/commit/84ab757e1159eac3cd160aac158873deaf51bb3f)
- Added comments to apiclient [`47f7583`](https://git.odit.services/kauft.es/linkylinky-dashboard/commit/47f75836597ff13a32660e03d61629ddd173f86c)
- No longer showing logged out users the profile pic thingy [`2010cc3`](https://git.odit.services/kauft.es/linkylinky-dashboard/commit/2010cc326019085ca37fcdc8b8dab8445006b6fa)
- Weired fucking fix for the userstore data not being instantly loaded.... [`cd3508d`](https://git.odit.services/kauft.es/linkylinky-dashboard/commit/cd3508dcb61f165a7c83d6f0f9332f799677cb9f)
- 🚀RELEASE 0.2.0 [`0dc6fe6`](https://git.odit.services/kauft.es/linkylinky-dashboard/commit/0dc6fe670498b6d1022a1ef6c4e5c4b3fcd7e352)
- First mitigations for localforage error stuff [`4f5b7f3`](https://git.odit.services/kauft.es/linkylinky-dashboard/commit/4f5b7f38fb625e4da0ea3f432df958029ee8d25c)
- Now ignoring status on logout [`8c1a2d3`](https://git.odit.services/kauft.es/linkylinky-dashboard/commit/8c1a2d319b9fb6e63c3e27163392bad1becba8dd)
- Removed unused function [`b57aa53`](https://git.odit.services/kauft.es/linkylinky-dashboard/commit/b57aa535de94e22f19754b729cc6b63166a07a9d)

View File

@@ -1,6 +1,6 @@
{
"name": "@odit/linkylinky-dashboard",
"version": "0.2.0",
"version": "0.3.0",
"scripts": {
"dev": "svelte-kit dev",
"build": "svelte-kit build",

View File

@@ -62,6 +62,18 @@ export default class Apiclient {
).data;
}
/**
* API-Getter for the linkylinky api all vists endpoint (needs auth)
* @returns Url visit details for each visit in an array of objects.
*/
static async getVisits() {
return (
await axios.get(`https://kauft.es/api/visits`, {
headers: { Authorization: `Bearer ${UserStore.state.token}` }
})
).data;
}
/**
* API-Delet for the linkylinky api url deletion endpoint (needs auth)
* @param {*} shortcode The shortcode of your most hated url

View File

@@ -46,7 +46,7 @@
<nav>
<a
class="flex items-center px-4 py-2 text-gray-700 bg-gray-200 rounded-md dark:bg-gray-700 dark:text-gray-200"
href="/"
href="./"
>
<svg class="w-5 h-5" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
@@ -66,7 +66,7 @@
{#if logged_in}
<a
class="flex items-center px-4 py-2 mt-5 text-gray-600 transition-colors duration-200 transform rounded-md dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-700 dark:hover:text-gray-200 hover:text-gray-700"
href="/links"
href="./links"
>
<svg
xmlns="http://www.w3.org/2000/svg"
@@ -85,6 +85,33 @@
<span class="mx-4 font-medium">Manage Links</span>
</a>
<a
class="flex items-center px-4 py-2 mt-5 text-gray-600 transition-colors duration-200 transform rounded-md dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-700 dark:hover:text-gray-200 hover:text-gray-700"
href="./visits"
>
<svg
xmlns="http://www.w3.org/2000/svg"
class="h-5 w-5"
fill="none"
viewBox="0 0 24 24"
stroke="currentColor"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"
/>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"
/>
</svg>
<span class="mx-4 font-medium">All Visits</span>
</a>
<!-- <a
class="flex items-center px-4 py-2 mt-5 text-gray-600 transition-colors duration-200 transform rounded-md dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-700 dark:hover:text-gray-200 hover:text-gray-700"
@@ -133,7 +160,7 @@
{:else}
<a
class="flex items-center px-4 py-2 mt-5 text-gray-600 transition-colors duration-200 transform rounded-md dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-700 dark:hover:text-gray-200 hover:text-gray-700"
href="/login"
href="./login"
>
<svg
xmlns="http://www.w3.org/2000/svg"
@@ -162,7 +189,9 @@
src="https://images.unsplash.com/photo-1531427186611-ecfd6d936c79?ixid=MXwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=634&q=80"
alt="avatar"
/>
<h4 class="mx-2 font-medium text-gray-800 dark:text-gray-200 hover:underline">Username here</h4>
<h4 class="mx-2 font-medium text-gray-800 dark:text-gray-200 hover:underline">
Username here
</h4>
</div>
{/if}
</div>

View File

@@ -46,7 +46,7 @@ const userStore = () => {
//
return state;
});
location.replace("/");
location.replace("./");
}
};

View File

@@ -25,7 +25,7 @@
<div style="min-height: 640px;" class="bg-white dark:bg-gray-800">
<div class="h-screen flex overflow-hidden">
<Sidebar />
<div class="px-4 py-8 flex flex-col w-0 flex-1 overflow-hidden">
<div class="px-4 py-8 flex flex-col w-0 flex-1 overflow-y-scroll">
<slot />
</div>
</div>

View File

@@ -8,7 +8,7 @@
// Yes i know this isn't the best way to implement this, but linkylinky dashboard is just a oneshot sideproject r/n.
const unsubscribe = UserStore.subscribe((value) => {
if (value.isLoggedIn) {
if (value.isLoggedIn && urls.length == 0) {
urlQuery = Apiclient.getUrls().then((res) => {
urls = res;
});
@@ -82,7 +82,7 @@
Delete
</button>
<a
href={`/details?shortcode=${url.shortcode}`}
href={`./details?shortcode=${url.shortcode}`}
class="px-4 py-2 font-medium tracking-wide text-white capitalize transition-colors duration-200 transform bg-blue-600 rounded-md hover:bg-blue-700 focus:outline-none focus:bg-blue-700"
>
Details

View File

@@ -11,7 +11,7 @@ import Apiclient from '$lib/Apiclient';
try {
const login = await Apiclient.login(username, password);
UserStore.login(login);
location.replace("/");
location.replace("./");
} catch (error) {
}
@@ -30,7 +30,7 @@ import Apiclient from '$lib/Apiclient';
<div class="w-full mt-4">
<input
class="block w-full px-4 py-2 mt-2 text-gray-700 placeholder-gray-500 bg-white border border-gray-300 rounded-md dark:bg-gray-800 dark:border-gray-600 dark:placeholder-gray-400 focus:border-blue-500 dark:focus:border-blue-500 focus:outline-none focus:ring"
class="block w-full px-4 py-2 mt-2 text-gray-700 dark:text-gray-400 placeholder-gray-500 bg-white border border-gray-300 rounded-md dark:bg-gray-800 dark:border-gray-600 dark:placeholder-gray-400 focus:border-blue-500 dark:focus:border-blue-500 focus:outline-none focus:ring"
type="text"
placeholder="Username"
aria-label="Username"
@@ -40,7 +40,7 @@ import Apiclient from '$lib/Apiclient';
<div class="w-full mt-4">
<input
class="block w-full px-4 py-2 mt-2 text-gray-700 placeholder-gray-500 bg-white border border-gray-300 rounded-md dark:bg-gray-800 dark:border-gray-600 dark:placeholder-gray-400 focus:border-blue-500 dark:focus:border-blue-500 focus:outline-none focus:ring"
class="block w-full px-4 py-2 mt-2 text-gray-700 dark:text-gray-400 placeholder-gray-500 bg-white border border-gray-300 rounded-md dark:bg-gray-800 dark:border-gray-600 dark:placeholder-gray-400 focus:border-blue-500 dark:focus:border-blue-500 focus:outline-none focus:ring"
type="password"
placeholder="Password"
aria-label="Password"

69
src/routes/visits.svelte Normal file
View File

@@ -0,0 +1,69 @@
<script>
import Apiclient from '$lib/Apiclient';
import UserStore from '$lib/UserStore';
import { onDestroy } from 'svelte';
$: visits = [];
let visitQuery;
// Yes i know this isn't the best way to implement this, but linkylinky dashboard is just a oneshot sideproject r/n.
const unsubscribe = UserStore.subscribe((value) => {
if (value.isLoggedIn && visits.length == 0) {
visitQuery = Apiclient.getVisits().then((res) => {
visits = res;
});
}
});
onDestroy(unsubscribe);
</script>
<h2 class="text-3xl font-bold text-gray-800 dark:text-gray-100 pb-6">View all visits</h2>
<div class="rounded-xl">
<table class="min-w-full divide-y divide-gray-200">
<thead class="bg-gray-50 dark:bg-gray-900 text-gray-800 dark:text-gray-100">
<tr>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium uppercase tracking-wider">
Shortcode
</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium uppercase tracking-wider">
Provider
</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium uppercase tracking-wider">
Timestamp
</th>
</tr>
</thead>
<tbody class="bg-white dark:bg-gray-700 divide-y divide-gray-200 dark:text-gray-100" x-max="1">
{#await visitQuery}
<tr>
<td
class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900 dark:text-gray-200"
>
Loading data...
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm"> Loading data... </td>
<td class="px-6 py-4 whitespace-nowrap text-sm"> Loading data... </td>
</tr>
{:then}
{#each visits as visit}
<tr>
<td
class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900 dark:text-gray-200"
>
{#if visit.provider == "native"}
<a href={`./details?shortcode=${visit.shortcode}`}>{visit.shortcode}</a>
{:else}
{visit.shortcode}
{/if}
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm">
{visit.provider}
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm"> {visit.timestamp} </td>
</tr>
{/each}
{/await}
</tbody>
</table>
</div>