feat: add error page

This commit is contained in:
Pearoo
2025-09-17 00:07:20 +02:00
committed by Armand
parent 7b382563ba
commit 34cf77f216
7 changed files with 552 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 KiB

View File

@@ -0,0 +1,369 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- https://github.com/stifolder/kretainsult/blob/master/src/assets/dirtywords.xml -->
<!-- Köszönjük a kretainsult.online eredeti alkotójának a kategorizálást! -->
<DirtyWords>
<Word type="m">Aberált</Word>
<Word type="m">Aberrált</Word>
<Word type="f">Abortuszmaradék</Word>
<Word type="m">Abszolút hülye</Word>
<Word type="m">Agyalágyult</Word>
<Word type="m">Agyatlan</Word>
<Word type="m">Agybatetovált</Word>
<Word type="m">Ágybavizelős</Word>
<Word type="f">Agyfasz</Word>
<Word type="f">Agyhalott</Word>
<Word type="m">Agyonkúrt</Word>
<Word type="m">Agyonvert</Word>
<Word type="m">Agyrákos</Word>
<Word type="m">AIDS-es</Word>
<Word type="m">Alapvetően fasz</Word>
<Word type="f">Animalsex-mániás</Word>
<Word type="f">Antibarom</Word>
<Word type="m">Aprófaszú</Word>
<Word type="m">Arcbarakott</Word>
<Word type="m">Aszaltfaszú</Word>
<Word type="m">Aszott</Word>
<Word type="m">Átbaszott</Word>
<Word type="f">Azt a kurva de fasz</Word>
<Word type="m">Balatonberényben napvilágot látott</Word>
<Word type="f">Balfasz</Word>
<Word type="f">Balfészek</Word>
<Word type="f">Baromfifasz</Word>
<Word type="f">Basz-o-matic</Word>
<Word type="m">Baszhatatlan</Word>
<Word type="m">Basznivaló</Word>
<Word type="m">Bebaszott</Word>
<Word type="m">Befosi</Word>
<Word type="m">Békapicsa</Word>
<Word type="m">Bélböfi</Word>
<Word type="m">Beleiből kiforgatott</Word>
<Word type="f">Bélszél</Word>
<Word type="m">Bronz térdű</Word>
<Word type="f">Brunya</Word>
<Word type="m">Büdös szájú</Word>
<Word type="m">Büdösszájú</Word>
<Word type="m">Búvalbaszott</Word>
<Word type="f">Buzeráns</Word>
<Word type="m">Buzernyák</Word>
<Word type="f">Buzi</Word>
<Word type="f">Buzikurva</Word>
<Word type="f">Cafat</Word>
<Word type="f">Cafka</Word>
<Word type="f">Céda</Word>
<Word type="m">Cérnafaszú</Word>
<Word type="f">Cottonfej</Word>
<Word type="m">Csempe szobában felneveltetett</Word>
<Word type="m">Cseszett</Word>
<Word type="f">Csibefasz</Word>
<Word type="f">Csipszar</Word>
<Word type="m">Csirkefaszú</Word>
<Word type="f">Csitri</Word>
<Word type="f">Csöcs</Word>
<Word type="f">Csöcsfej</Word>
<Word type="f">Csöppszar</Word>
<Word type="m">Csőszkunyhóban elrejtett</Word>
<Word type="m">Csupaszfarkú</Word>
<Word type="f">Cuncipunci</Word>
<Word type="m">Deformáltfaszú</Word>
<Word type="m">Dekorált pofájú</Word>
<Word type="m">Döbbenetesen segg</Word>
<Word type="m">Dobseggű</Word>
<Word type="m">Dughatatlan</Word>
<Word type="m">Dunyhavalagú</Word>
<Word type="m">Duplafaszú</Word>
<Word type="f">Ebfasz</Word>
<Word type="m">Egyszerűen fasz</Word>
<Word type="m">Elbaszott</Word>
<Word type="m">Eleve hülye</Word>
<Word type="m">Extrahülye</Word>
<Word type="m">Fafogú rézfűrésszel megsebzett</Word>
<Word type="m">Fantasztikusan segg</Word>
<Word type="f">Fasszopó</Word>
<Word type="m">Fasz</Word>
<Word type="m">Fasz-emulátor</Word>
<Word type="m">Faszagyú</Word>
<Word type="f">Faszarc</Word>
<Word type="f">Faszfej</Word>
<Word type="f">Faszfészek</Word>
<Word type="f">Faszkalap</Word>
<Word type="f">Faszkarika</Word>
<Word type="m">Faszkedvelő</Word>
<Word type="f">Faszkópé</Word>
<Word type="f">Faszogány</Word>
<Word type="f">Faszpörgettyű</Word>
<Word type="f">Faszsapka</Word>
<Word type="m">Faszszagú</Word>
<Word type="f">Faszszopó</Word>
<Word type="m">Fasztalan</Word>
<Word type="f">Fasztarisznya</Word>
<Word type="f">Fasztengely</Word>
<Word type="f">Fasztolvaj</Word>
<Word type="f">Faszváladék</Word>
<Word type="f">Faszverő</Word>
<Word type="m">Félrebaszott</Word>
<Word type="m">Félrefingott</Word>
<Word type="m">Félreszart</Word>
<Word type="f">Félribanc</Word>
<Word type="f">Fing</Word>
<Word type="m">Fölcsinált</Word>
<Word type="m">Fölfingott</Word>
<Word type="f">Fos</Word>
<Word type="f">Foskemence</Word>
<Word type="f">Fospisztoly</Word>
<Word type="f">Fospumpa</Word>
<Word type="f">Fostalicska</Word>
<Word type="f">Fütyi</Word>
<Word type="m">Fütyinyalogató</Word>
<Word type="f">Fütykös</Word>
<Word type="f">Geci</Word>
<Word type="m">Gecinyelő</Word>
<Word type="m">Geciszaró</Word>
<Word type="m">Geciszívó</Word>
<Word type="f">Genny</Word>
<Word type="m">Gennyesszájú</Word>
<Word type="f">Gennygóc</Word>
<Word type="f">Genyac</Word>
<Word type="f">Genyó</Word>
<Word type="f">Gólyafos</Word>
<Word type="m">Görbefaszú</Word>
<Word type="m">Gyennyszopó</Word>
<Word type="f">Gyíkfing</Word>
<Word type="f">Hájpacni</Word>
<Word type="f">Hatalmas nagy fasz</Word>
<Word type="m">Hátbabaszott</Word>
<Word type="f">Házikurva</Word>
<Word type="m">Hererákos</Word>
<Word type="m">Hígagyú</Word>
<Word type="m">Hihetetlenül fasz</Word>
<Word type="f">Hikomat</Word>
<Word type="f">Hímnőstény</Word>
<Word type="f">Hímringyó</Word>
<Word type="m">Hiperstrici</Word>
<Word type="m">Hitler-imádó</Word>
<Word type="m">Hitlerista</Word>
<Word type="f">Hivatásos balfasz</Word>
<Word type="m">Hú de segg</Word>
<Word type="m">Hugyagyú</Word>
<Word type="m">Hugyos</Word>
<Word type="f">Hugytócsa</Word>
<Word type="m">Hüje</Word>
<Word type="m">Hüle</Word>
<Word type="m">Hülye</Word>
<Word type="m">Hülyécske</Word>
<Word type="f">Hülyegyerek</Word>
<Word type="f">Inkubátor-szökevény</Word>
<Word type="f">Integrált barom</Word>
<Word type="m">Ionizált faszú</Word>
<Word type="f">IQ bajnok</Word>
<Word type="f">IQ fighter</Word>
<Word type="m">IQ hiányos</Word>
<Word type="m">Irdatlanul köcsög</Word>
<Word type="m">Íveltfaszú</Word>
<Word type="m">Jajj de barom</Word>
<Word type="m">Jókora fasz</Word>
<Word type="f">Kaka</Word>
<Word type="f">Kakamatyi</Word>
<Word type="f">Kaki</Word>
<Word type="f">Kaksi</Word>
<Word type="m">Kecskebaszó</Word>
<Word type="m">Kellően fasz</Word>
<Word type="m">Képlékeny faszú</Word>
<Word type="f">Keresve sem található fasz</Word>
<Word type="m">Kétfaszú</Word>
<Word type="m">Kétszer agyonbaszott</Word>
<Word type="m">Ki-bebaszott</Word>
<Word type="m">Kibaszott</Word>
<Word type="m">Kifingott</Word>
<Word type="m">Kiherélt</Word>
<Word type="m">Kikakkantott</Word>
<Word type="m">Kikészült</Word>
<Word type="m">Kimagaslóan fasz</Word>
<Word type="m">Kimondhatatlan pöcs</Word>
<Word type="f">Kis szaros</Word>
<Word type="f">Kisfütyi</Word>
<Word type="m">Klotyószagú</Word>
<Word type="m">Ködmönbe bújtatott</Word>
<Word type="m">Kojak-faszú</Word>
<Word type="m">Kopárfaszú</Word>
<Word type="m">Korlátolt gecizésű</Word>
<Word type="f">Kotonszökevény</Word>
<Word type="m">Középszar</Word>
<Word type="f">Kretén</Word>
<Word type="f">Kuki</Word>
<Word type="f">Kula</Word>
<Word type="m">Kunkorított faszú</Word>
<Word type="f">Kurva</Word>
<Word type="m">Kurvaanyjú</Word>
<Word type="f">Kurvapecér</Word>
<Word type="f">Kutyakaki</Word>
<Word type="f">Kutyapina</Word>
<Word type="f">Kutyaszar</Word>
<Word type="m">Lankadtfaszú</Word>
<Word type="m">Lebaszirgált</Word>
<Word type="m">Lebaszott</Word>
<Word type="m">Lecseszett</Word>
<Word type="m">Leírhatatlanul segg</Word>
<Word type="m">Lemenstruált</Word>
<Word type="m">Leokádott</Word>
<Word type="f">Lepkefing</Word>
<Word type="f">Leprafészek</Word>
<Word type="m">Leszart</Word>
<Word type="m">Leszbikus</Word>
<Word type="f">Lőcs</Word>
<Word type="f">Lőcsgéza</Word>
<Word type="f">Lófasz</Word>
<Word type="m">Lógócsöcsű</Word>
<Word type="f">Lóhugy</Word>
<Word type="f">Lotyó</Word>
<Word type="m">Lucskos</Word>
<Word type="f">Lugnya</Word>
<Word type="m">Lyukasbelű</Word>
<Word type="m">Lyukasfaszú</Word>
<Word type="m">Lyukát vakaró</Word>
<Word type="m">Lyuktalanított</Word>
<Word type="f">Mamutsegg</Word>
<Word type="f">Maszturbációs görcs</Word>
<Word type="f">Maszturbagép</Word>
<Word type="m">Maszturbáltatott</Word>
<Word type="m">Megfingatott</Word>
<Word type="m">Megkettyintett</Word>
<Word type="m">Megkúrt</Word>
<Word type="m">Megszopatott</Word>
<Word type="m">Mesterséges faszú</Word>
<Word type="f">Méteres kékeres</Word>
<Word type="m">Mikrotökű</Word>
<Word type="m">Mocskos</Word>
<Word type="f">Mojfing</Word>
<Word type="m">Műfaszú</Word>
<Word type="f">Muff</Word>
<Word type="f">Multifasz</Word>
<Word type="m">Műtöttpofájú</Word>
<Word type="m">Náci</Word>
<Word type="m">Nagyfejű</Word>
<Word type="f">Nikotinpatkány</Word>
<Word type="m">Nimfomániás</Word>
<Word type="f">Nuna</Word>
<Word type="f">Nunci</Word>
<Word type="f">Nuncóka</Word>
<Word type="f">Nyalábfasz</Word>
<Word type="f">Nyelestojás</Word>
<Word type="f">Nyúlszar</Word>
<Word type="f">Oltári nagy fasz</Word>
<Word type="m">Ondónyelő</Word>
<Word type="m">Orbitálisan hülye</Word>
<Word type="m">Ordenálé</Word>
<Word type="m">Összebaszott</Word>
<Word type="f">Ötcsillagos fasz</Word>
<Word type="m">Óvszerezett</Word>
<Word type="f">Pénisz</Word>
<Word type="m">Peremesfaszú</Word>
<Word type="f">Picsa</Word>
<Word type="f">Picsafej</Word>
<Word type="m">Picsameresztő</Word>
<Word type="m">Picsánnyalt</Word>
<Word type="m">Picsánrugott</Word>
<Word type="m">Picsányi</Word>
<Word type="m">Pikkelypáncélt hordó</Word>
<Word type="f">Pina</Word>
<Word type="f">Pisa</Word>
<Word type="m">Pisaszagú</Word>
<Word type="m">Pisis</Word>
<Word type="f">Pöcs</Word>
<Word type="f">Pöcsfej</Word>
<Word type="m">Porbafingó</Word>
<Word type="f">Pornóbuzi</Word>
<Word type="m">Pornómániás</Word>
<Word type="m">Pudvás</Word>
<Word type="m">Pudváslikú</Word>
<Word type="m">Puhafaszú</Word>
<Word type="f">Punci</Word>
<Word type="f">Puncimókus</Word>
<Word type="m">Puncis</Word>
<Word type="f">Punciutáló</Word>
<Word type="f">Puncivirág</Word>
<Word type="f">Qki</Word>
<Word type="f">Qrva</Word>
<Word type="f">Qtyaszar</Word>
<Word type="m">Rabló</Word>
<Word type="m">Rágcsáltfaszú</Word>
<Word type="f">Redva</Word>
<Word type="m">Rendkívül fasz</Word>
<Word type="m">Repedtsarkú</Word>
<Word type="m">Rétó-román</Word>
<Word type="m">Rézhasú</Word>
<Word type="f">Ribanc</Word>
<Word type="f">Riherongy</Word>
<Word type="m">Ritka fogú</Word>
<Word type="m">Rivalizáló</Word>
<Word type="f">Rőfös fasz</Word>
<Word type="m">Rojtospicsájú</Word>
<Word type="m">Rongyospinájú</Word>
<Word type="m">Roppant hülye</Word>
<Word type="f">Rossz kurva</Word>
<Word type="m">Saját nemével kefélő</Word>
<Word type="f">Segg</Word>
<Word type="f">Seggarc</Word>
<Word type="f">Seggdugó</Word>
<Word type="f">Seggfej</Word>
<Word type="f">Seggnyaló</Word>
<Word type="f">Seggszőr</Word>
<Word type="f">Seggtorlasz</Word>
<Word type="m">Sikoltozásokba öltöztetett</Word>
<Word type="f">Strici</Word>
<Word type="m">Suttyó</Word>
<Word type="m">Sutyerák</Word>
<Word type="m">Szálkafaszú</Word>
<Word type="f">Szar</Word>
<Word type="f">Szaralak</Word>
<Word type="f">Szárazfing</Word>
<Word type="f">Szarbojler</Word>
<Word type="f">Szarcsimbók</Word>
<Word type="m">Szarevő</Word>
<Word type="m">Szarfaszú</Word>
<Word type="f">Szarházi</Word>
<Word type="f">Szarjankó</Word>
<Word type="m">Szarnivaló</Word>
<Word type="m">Szarosvalagú</Word>
<Word type="m">Szarrá vágott</Word>
<Word type="f">Szarrágó</Word>
<Word type="m">Szarszagú</Word>
<Word type="m">Szarszájú</Word>
<Word type="f">Szartragacs</Word>
<Word type="f">Szarzsák</Word>
<Word type="f">Szégyencsicska</Word>
<Word type="m">Szifiliszes</Word>
<Word type="f">Szivattyús kurva</Word>
<Word type="m">Szófosó</Word>
<Word type="m">Szokatlanul fasz</Word>
<Word type="f">Szop-o-matic</Word>
<Word type="f">Szopógép</Word>
<Word type="f">Szopógörcs</Word>
<Word type="f">Szopós kurva</Word>
<Word type="m">Szopottfarkú</Word>
<Word type="m">Szűklyukú</Word>
<Word type="m">Szultán udvarát megjárt</Word>
<Word type="f">Szúnyogfaszni</Word>
<Word type="f">Szuperbuzi</Word>
<Word type="f">Szuperkurva</Word>
<Word type="m">Szűzhártya-repedéses</Word>
<Word type="f">Szűzkurva</Word>
<Word type="f">Szűzpicsa</Word>
<Word type="f">Szűzpunci</Word>
<Word type="m">Tetves</Word>
<Word type="f">Tikfos</Word>
<Word type="f">Tikszar</Word>
<Word type="m">Tompatökű</Word>
<Word type="m">Törpefaszú</Word>
<Word type="m">Toszatlan</Word>
<Word type="m">Toszott</Word>
<Word type="m">Totálisan hülye</Word>
<Word type="m">Tyű de picsa</Word>
<Word type="m">Tyúkfasznyi</Word>
<Word type="f">Tyúkszar</Word>
<Word type="f">Vadfasz</Word>
<Word type="f">Valag</Word>
<Word type="f">Valagváladék</Word>
<Word type="f">Végbélféreg</Word>
<Word type="f">Xar</Word>
<Word type="m">Zsugorított faszú</Word>
</DirtyWords>

View File

@@ -0,0 +1,50 @@
import 'dart:math';
import 'package:flutter/services.dart' show rootBundle;
import 'package:xml/xml.dart';
List<String> _nouns = [];
List<String> _adjectives = [];
Future<void> loadDirtyWords() async {
final xmlString = await rootBundle.loadString('assets/swears/DirtyWords.xml');
final document = XmlDocument.parse(xmlString);
for (final node in document.findAllElements('Word')) {
final type = node.getAttribute('type');
final text = node.text.trim();
if (type == 'f') {
_nouns.add(text);
} else if (type == 'm') {
_adjectives.add(text);
}
}
}
String generateSwearSentence(
{int words = 3, bool capitalize = true, bool exclamation = true}) {
if (words < 1) {
throw ArgumentError('Words must be at least 1');
}
final random = Random();
// if we only need one word, return a noun, that's the one that fits the most
if (words == 1) {
final word = _nouns[random.nextInt(_nouns.length)].toLowerCase();
return (capitalize ? word[0].toUpperCase() + word.substring(1) : word) +
(exclamation ? '!' : '');
}
final chosenNouns = List.generate(
words - 1,
(_) => _nouns[random.nextInt(_nouns.length)],
);
final adjective = _adjectives[random.nextInt(_adjectives.length)];
final swear = '${chosenNouns.join(', ')} $adjective'.toLowerCase();
return (capitalize ? swear[0].toUpperCase() + swear.substring(1) : swear) +
(exclamation ? '!' : '');
}

View File

@@ -12,6 +12,7 @@ import 'package:firka/helpers/db/widget.dart';
import 'package:firka/helpers/extensions.dart';
import 'package:firka/helpers/firka_bundle.dart';
import 'package:firka/helpers/settings.dart';
import 'package:firka/helpers/swear_generator.dart';
import 'package:firka/l10n/app_localizations_hu.dart';
import 'package:firka/ui/model/style.dart';
import 'package:firka/ui/phone/pages/error/error_page.dart';
@@ -351,6 +352,10 @@ void main() async {
})();
}
logger.finest('loading dirty words');
await loadDirtyWords();
logger.finest('loaded dirty words');
// Run App Initialization
runApp(InitializationScreen());
}, (error, stackTrace) {

View File

@@ -1,4 +1,8 @@
import 'package:firka/ui/model/style.dart';
import 'package:flutter/material.dart';
import 'package:firka/helpers/image_preloader.dart';
import 'package:firka/helpers/firka_bundle.dart';
import 'package:firka/helpers/swear_generator.dart';
class ErrorPage extends StatelessWidget {
final String exception;
@@ -7,6 +11,126 @@ class ErrorPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: appStyle.colors.background,
body: Padding(
padding: const EdgeInsets.symmetric(vertical: 64, horizontal: 24),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Column(children: [
SizedBox(height: 48),
Container(
width: 50,
height: 50,
clipBehavior: Clip.antiAlias,
decoration: ShapeDecoration(
image: DecorationImage(
image: PreloadedImageProvider(FirkaBundle(),
('assets/images/logos/dave_error.png')),
fit: BoxFit.cover,
),
shape: ContinuousRectangleBorder(),
),
),
Padding(
padding: const EdgeInsets.symmetric(
vertical: 24, horizontal: 32),
child: Column(children: [
Text(
'e-Kréta, te',
style: appStyle.fonts.H_16px
.copyWith(color: appStyle.colors.textSecondary),
textAlign: TextAlign.center,
),
Text(
//'a,',
generateSwearSentence(),
style: appStyle.fonts.H_H2.copyWith(
color: appStyle.colors.textPrimary,
fontSize: 24),
textAlign: TextAlign.center,
),
])),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 32),
child: Text(
"Valami probléma történt, ez természetesen az EduDev Zrt. hibája minden esetben",
style: appStyle.fonts.B_14R.copyWith(
color: appStyle.colors.textSecondary,
),
textAlign: TextAlign.center,
),
),
]),
Column(
children: [
Stack(children: [
Container(
height: 300,
padding: const EdgeInsets.all(12),
decoration: BoxDecoration(
shape: BoxShape.rectangle,
color: appStyle.colors.card,
borderRadius: BorderRadius.circular(12)),
child: Text(exception,
style: appStyle.fonts.B_14R.copyWith(
color: appStyle.colors.textPrimary,
fontFamily: 'RobotoMono'))),
Positioned(
bottom: 0,
right: 16,
child: Container(
width: 60,
height: 76,
clipBehavior: Clip.antiAlias,
decoration: ShapeDecoration(
image: DecorationImage(
image: PreloadedImageProvider(FirkaBundle(),
('assets/images/cactus_error_screen.png')),
fit: BoxFit.cover,
colorFilter: ColorFilter.srgbToLinearGamma()),
shape: ContinuousRectangleBorder(),
),
),
)
]),
SizedBox(
height: 20,
),
ElevatedButton(
// TODO: report bug
onPressed: () => Navigator.pop(context),
style: ElevatedButton.styleFrom(
foregroundColor: appStyle.colors.textPrimary,
backgroundColor: appStyle.colors.accent,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12)),
elevation: 1,
shadowColor: appStyle.colors.shadowColor,
minimumSize: Size.fromHeight(48)),
child: Text("Hiba jelentése",
style: appStyle.fonts.H_18px
.copyWith(fontWeight: FontWeight.w700))),
SizedBox(
height: 8,
),
ElevatedButton(
onPressed: () => Navigator.pop(context),
style: ElevatedButton.styleFrom(
foregroundColor: appStyle.colors.textSecondary,
backgroundColor:
appStyle.colors.buttonSecondaryFill,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12)),
elevation: 1,
shadowColor: appStyle.colors.shadowColor,
minimumSize: Size.fromHeight(48)),
child: Text("Vissza", style: appStyle.fonts.B_16R))
],
)
])));
return Scaffold(
appBar: AppBar(
title: Text('Error Occurred'),

View File

@@ -69,6 +69,7 @@ dependencies:
logging: ^1.3.0
share_plus: ^11.1.0
url_launcher: ^6.3.2
xml: ^6.6.1
dev_dependencies:
flutter_test:
@@ -103,6 +104,9 @@ flutter:
- assets/icons/
- assets/majesticons/
- assets/firka.i
- assets/swears/DirtyWords.xml
- assets/images/cactus_error_screen.png
- assets/images/logos/dave_error.png
fonts:
- family: Montserrat