Add APK release flow with R2 redirects and updater support

This commit is contained in:
Dwindi Ramadhana
2026-02-21 21:28:40 +07:00
parent 3d4a753be7
commit efc013f498
14 changed files with 865 additions and 120 deletions

View File

@@ -1,7 +1,7 @@
@extends('site.layout')
@section('title', 'Download - Dewemoji')
@section('meta_description', 'Download Dewemoji for Chrome and get notified when Android app is available.')
@section('meta_description', 'Download Dewemoji for Chrome and Android.')
@push('jsonld')
<script type="application/ld+json">
@@ -78,16 +78,33 @@
</section>
<section class="glass-card rounded-2xl p-6">
<div class="text-xs uppercase tracking-[0.25em] text-gray-400">Coming soon</div>
<div class="text-xs uppercase tracking-[0.25em] text-gray-400">
{{ $androidEnabled ? 'Available now' : 'Coming soon' }}
</div>
<h2 class="mt-2 text-2xl font-semibold">Android App</h2>
<p class="mt-2 text-sm text-gray-300">Native app release is in progress. We will launch internal testing first, then public release.</p>
<div class="mt-5 inline-flex items-center gap-2 rounded-full border border-white/10 px-4 py-2 text-xs text-gray-300 bg-white/5">
<i data-lucide="smartphone" class="w-4 h-4"></i>
Android release in preparation
</div>
<div class="mt-4 text-xs text-gray-400">
Recommended for now: use web dashboard + Chrome extension.
</div>
@if($androidEnabled)
<p class="mt-2 text-sm text-gray-300">Direct APK distribution from Dewemoji download channel.</p>
<a
href="{{ $androidLatestApkUrl }}"
rel="noopener"
class="mt-5 inline-flex items-center gap-2 rounded-full bg-brand-sun text-black px-5 py-2.5 text-sm font-semibold hover:brightness-95 transition-colors"
>
<i data-lucide="smartphone" class="w-4 h-4"></i>
Download APK
</a>
<div class="mt-4 text-xs text-gray-400">
Update metadata: <a href="{{ $androidVersionJsonUrl }}" class="underline hover:text-gray-200">{{ $androidVersionJsonUrl }}</a>
</div>
@else
<p class="mt-2 text-sm text-gray-300">Native app release is in progress. We will launch internal testing first, then public release.</p>
<div class="mt-5 inline-flex items-center gap-2 rounded-full border border-white/10 px-4 py-2 text-xs text-gray-300 bg-white/5">
<i data-lucide="smartphone" class="w-4 h-4"></i>
Android release in preparation
</div>
<div class="mt-4 text-xs text-gray-400">
Recommended for now: use web dashboard + Chrome extension.
</div>
@endif
</section>
<section class="glass-card rounded-2xl p-6 lg:col-span-2">
@@ -100,12 +117,14 @@
</div>
<div class="mt-1 text-sm text-emerald-100">Available</div>
</div>
<div class="rounded-xl border border-amber-500/30 bg-amber-500/10 p-4">
<div class="flex items-center gap-2 text-xs uppercase tracking-[0.2em] text-amber-300">
<div class="rounded-xl {{ $androidEnabled ? 'border border-emerald-500/30 bg-emerald-500/10' : 'border border-amber-500/30 bg-amber-500/10' }} p-4">
<div class="flex items-center gap-2 text-xs uppercase tracking-[0.2em] {{ $androidEnabled ? 'text-emerald-300' : 'text-amber-300' }}">
<i data-lucide="bot" class="w-4 h-4"></i>
<span>Android</span>
</div>
<div class="mt-1 text-sm text-amber-100">In progress</div>
<div class="mt-1 text-sm {{ $androidEnabled ? 'text-emerald-100' : 'text-amber-100' }}">
{{ $androidEnabled ? 'Available' : 'In progress' }}
</div>
</div>
<div class="rounded-xl border border-sky-500/30 bg-sky-500/10 p-4">
<div class="flex items-center gap-2 text-xs uppercase tracking-[0.2em] text-sky-300">