Update to svelte 5
This commit is contained in:
@@ -3,7 +3,7 @@ import { onMount } from "svelte";
|
||||
import Expandable from "util/Expandable.svelte";
|
||||
import { formatDate } from "util/Formatting";
|
||||
|
||||
let result = null;
|
||||
let result = $state(null);
|
||||
|
||||
onMount(async () => {
|
||||
try {
|
||||
@@ -21,9 +21,11 @@ onMount(async () => {
|
||||
{#if result !== null && result.user_banned}
|
||||
<section>
|
||||
<Expandable click_expand>
|
||||
<div slot="header" class="header red">
|
||||
Your account has been banned, click for details
|
||||
</div>
|
||||
{#snippet header()}
|
||||
<div class="header red">
|
||||
Your account has been banned, click for details
|
||||
</div>
|
||||
{/snippet}
|
||||
<p>
|
||||
Your user account has been banned from uploading to
|
||||
pixeldrain due to violation of the
|
||||
@@ -72,13 +74,16 @@ onMount(async () => {
|
||||
{:else if result !== null && result.ip_offences.length > 0}
|
||||
<section>
|
||||
<Expandable click_expand>
|
||||
<div slot="header" class="header" class:red={result.ip_banned} class:yellow={!result.ip_banned}>
|
||||
{#if result.ip_banned}
|
||||
Your IP address has been banned, click for details
|
||||
{:else}
|
||||
Your IP address has received a copyright strike, click for details
|
||||
{/if}
|
||||
</div>
|
||||
{#snippet header()}
|
||||
<div class="header" class:red={result.ip_banned} class:yellow={!result.ip_banned}>
|
||||
{#if result.ip_banned}
|
||||
Your IP address has been banned, click for details
|
||||
{:else}
|
||||
Your IP address has received a copyright strike, click for details
|
||||
{/if}
|
||||
</div>
|
||||
{/snippet}
|
||||
|
||||
{#if result.ip_banned}
|
||||
<p>
|
||||
Your IP address ({result.address}) has been banned from
|
||||
|
||||
@@ -36,10 +36,12 @@ import OtherPlans from "./OtherPlans.svelte";
|
||||
</div>
|
||||
<div class="feature_cell pro_feat">
|
||||
<Tooltip>
|
||||
<span slot="label">
|
||||
<span class="bold">€4 / month</span> or
|
||||
<span class="bold">€40 / year</span>
|
||||
</span>
|
||||
{#snippet label()}
|
||||
<span>
|
||||
<span class="bold">€4 / month</span> or
|
||||
<span class="bold">€40 / year</span>
|
||||
</span>
|
||||
{/snippet}
|
||||
The Pro subscription is managed by Patreon. Patreon's own fees
|
||||
and sales tax will be added to this price. After paying you need
|
||||
to link your pixeldrain account to Patreon to activate the plan.
|
||||
@@ -47,7 +49,9 @@ import OtherPlans from "./OtherPlans.svelte";
|
||||
</div>
|
||||
<div class="feature_cell prepaid_feat">
|
||||
<Tooltip>
|
||||
<span slot="label" class="bold">€1 / month minimum</span>
|
||||
{#snippet label()}
|
||||
<span class="bold">€1 / month minimum</span>
|
||||
{/snippet}
|
||||
<p>
|
||||
The minimum fee is only charged when usage is less than €1.
|
||||
This calculation is per day, the €1 amount is divided by the
|
||||
@@ -62,7 +66,9 @@ import OtherPlans from "./OtherPlans.svelte";
|
||||
</div>
|
||||
<div class="feature_cell free_feat">
|
||||
<Tooltip>
|
||||
<span slot="label" class="bold">6 GB per day</span>
|
||||
{#snippet label()}
|
||||
<span class="bold">6 GB per day</span>
|
||||
{/snippet}
|
||||
<p>
|
||||
Free users are limited to downloading 6 GB per day, this
|
||||
limit is linked to your IP address, even if you are logged
|
||||
@@ -77,7 +83,9 @@ import OtherPlans from "./OtherPlans.svelte";
|
||||
</div>
|
||||
<div class="feature_cell pro_feat">
|
||||
<Tooltip>
|
||||
<span slot="label" class="bold">4 TB per 30 days</span>
|
||||
{#snippet label()}
|
||||
<span class="bold">4 TB per 30 days</span>
|
||||
{/snippet}
|
||||
<p>
|
||||
The transfer limit is used for downloading, sharing and
|
||||
hotlinking files.
|
||||
@@ -89,7 +97,9 @@ import OtherPlans from "./OtherPlans.svelte";
|
||||
</div>
|
||||
<div class="feature_cell prepaid_feat">
|
||||
<Tooltip>
|
||||
<span slot="label" class="bold">€1 per TB transferred</span>
|
||||
{#snippet label()}
|
||||
<span class="bold">€1 per TB transferred</span>
|
||||
{/snippet}
|
||||
<p>
|
||||
Prepaid does not have a transfer limit, instead you are
|
||||
charged for what you use at a rate of €1 per terabyte
|
||||
@@ -132,7 +142,9 @@ import OtherPlans from "./OtherPlans.svelte";
|
||||
</div>
|
||||
<div class="feature_cell free_feat">
|
||||
<Tooltip>
|
||||
<span slot="label" class="bold">120 days (4 months)</span>
|
||||
{#snippet label()}
|
||||
<span class="bold">120 days (4 months)</span>
|
||||
{/snippet}
|
||||
<p>
|
||||
Files expire when they have not been downloaded in the last
|
||||
120 days. A download is counted when more than 10% of the
|
||||
@@ -142,7 +154,9 @@ import OtherPlans from "./OtherPlans.svelte";
|
||||
</div>
|
||||
<div class="feature_cell pro_feat">
|
||||
<Tooltip>
|
||||
<span slot="label" class="bold">240 days (8 months)</span>
|
||||
{#snippet label()}
|
||||
<span class="bold">240 days (8 months)</span>
|
||||
{/snippet}
|
||||
<p>
|
||||
The Pro plan has 240 day file expiry. The same rules apply
|
||||
as the free plan. Higher Patreon subscription plans are
|
||||
@@ -152,7 +166,9 @@ import OtherPlans from "./OtherPlans.svelte";
|
||||
</div>
|
||||
<div class="feature_cell prepaid_feat">
|
||||
<Tooltip>
|
||||
<span slot="label" class="bold">Files do not expire</span>
|
||||
{#snippet label()}
|
||||
<span class="bold">Files do not expire</span>
|
||||
{/snippet}
|
||||
<p>
|
||||
Files don't expire while your Prepaid plan is active. If
|
||||
your credit runs out you have one week to top up your
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
<script>
|
||||
import Expandable from "util/Expandable.svelte";
|
||||
</script>
|
||||
|
||||
<section>
|
||||
<Expandable click_expand>
|
||||
<div slot="header" class="header">
|
||||
Important policy change! Click to expand
|
||||
</div>
|
||||
<p>
|
||||
Sometime this summer pixeldrain will start requiring you to be
|
||||
logged in to an account in order to upload new files. This is
|
||||
necessary due to the large amount of regional blockings that have
|
||||
been implemented against pixeldrain recently.
|
||||
</p>
|
||||
<p>
|
||||
None of the countries that have blocked pixeldrain have specified a
|
||||
valid reason, nor have I been able to contact them to ask what's
|
||||
going on. But I can only guess that it has something to do with
|
||||
abusive content being uploaded. Pixeldrain currently uses an IP
|
||||
address banning system for restricting uploads from users who have
|
||||
violated the content policy, but at the scale the site operates at
|
||||
now that has proven to not be effective anymore. For that reason
|
||||
pixeldrain will be switching to an account ban system.
|
||||
</p>
|
||||
<p>
|
||||
The account ban system will restrict file uploads to your account
|
||||
for a certain amount of time which depends on the type of the
|
||||
offence. Serious violations might get your account banned for up to
|
||||
a year, minor violations maybe a day or a week per file. It will
|
||||
depend on the amount of abuse that slips through. Once the account
|
||||
ban system is activated the IP ban system will be disabled.
|
||||
</p>
|
||||
<p>
|
||||
Account banning is only effective if there is some system in place
|
||||
to prevent the automated creation of accounts. There is already a
|
||||
CAPTCHA in place on the registration page. I might start requiring
|
||||
e-mail addresses for new accounts as well. The lack of an e-mail
|
||||
address requirement has caused many issues with lost accounts as
|
||||
well, so it had to happen anyway. I will also be looking into
|
||||
integrating with OAuth providers (Google, Microsoft, Facebook,
|
||||
Patreon, etc) to make the login flow simpler for newcomers.
|
||||
</p>
|
||||
<p>
|
||||
After the site has been cleaned up it might take a long time before
|
||||
all the regional blocking issues are resolved. Because of that I
|
||||
will be adding alternative domain names for premium subscribers to
|
||||
use. Most of the blocks are only on DNS level, which means they can
|
||||
be circumvented by using a different domain name.
|
||||
</p>
|
||||
</Expandable>
|
||||
</section>
|
||||
|
||||
<style>
|
||||
.header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 100%;
|
||||
border-radius: 6px;
|
||||
background-color: rgba(0, 0, 255, 0.2);
|
||||
}
|
||||
</style>
|
||||
@@ -1,27 +1,28 @@
|
||||
<script>
|
||||
import { run } from 'svelte/legacy';
|
||||
import { onMount } from "svelte";
|
||||
import Euro from "util/Euro.svelte";
|
||||
import ProgressBar from "util/ProgressBar.svelte";
|
||||
|
||||
let pixeldrain_storage = 0
|
||||
let pixeldrain_egress = 0
|
||||
let pixeldrain_total = 0
|
||||
let backblaze_storage = 0
|
||||
let backblaze_egress = 0
|
||||
let backblaze_api = 0
|
||||
let backblaze_total = 0
|
||||
let wasabi_storage = 0
|
||||
let wasabi_total = 0
|
||||
let pixeldrain_storage = $state(0)
|
||||
let pixeldrain_egress = $state(0)
|
||||
let pixeldrain_total = $state(0)
|
||||
let backblaze_storage = $state(0)
|
||||
let backblaze_egress = $state(0)
|
||||
let backblaze_api = $state(0)
|
||||
let backblaze_total = $state(0)
|
||||
let wasabi_storage = $state(0)
|
||||
let wasabi_total = $state(0)
|
||||
let price_amazon = 0
|
||||
let price_azure = 0
|
||||
let price_google = 0
|
||||
let price_max = 0
|
||||
let price_max = $state(0)
|
||||
|
||||
let storage = 10 // TB
|
||||
let egress = 10 // TB
|
||||
let avg_file_size = 1000 // kB
|
||||
let storage = $state(10) // TB
|
||||
let egress = $state(10) // TB
|
||||
let avg_file_size = $state(1000) // kB
|
||||
|
||||
$: {
|
||||
run(() => {
|
||||
pixeldrain_storage = storage * 4
|
||||
pixeldrain_egress = egress * 1
|
||||
pixeldrain_total = pixeldrain_storage + pixeldrain_egress
|
||||
@@ -43,7 +44,7 @@ $: {
|
||||
// price_google = (storage * 20) + (egress * 20)
|
||||
|
||||
price_max = Math.max(pixeldrain_total, backblaze_total, wasabi_total, price_amazon, price_azure, price_google)
|
||||
}
|
||||
});
|
||||
|
||||
onMount(() => {})
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user