Skip to content

fix: fungerende datovelger, mørk modus på bunnark, og filtre som faktisk filtrerer - #129

Merged
MathiasStrom merged 3 commits into
mainfrom
claude/utlegg-native-date-picker-219666
Aug 15, 2026
Merged

fix: fungerende datovelger, mørk modus på bunnark, og filtre som faktisk filtrerer#129
MathiasStrom merged 3 commits into
mainfrom
claude/utlegg-native-date-picker-219666

Conversation

@MathiasStrom

Copy link
Copy Markdown
Contributor

Tre feil som hadde det til felles at de så ut til å virke. Alle er funnet ved å kjøre appen i simulator eller måle mot Photon, ikke ved lesing.

1. Datovelgeren for utlegg var død

#127 byttet fritekstfeltet mot et inline spinner-hjul. Det kollapser til null høyde under den nye arkitekturen i SDK 54, så feltet var ikke mulig å åpne. Ingen JS-feil — komponenten monterte, den tegnet bare ingenting.

iOS bruker nå Apples kompakte kontroll, som åpner kalenderen sin selv. Pillen den tegner rundt datoen lar seg ikke style bort, så den synlige raden legges oppå som et lokk med pointerEvents="none": pillen skjules, og trykk går rett gjennom. Lokket må være ugjennomsiktig, og fargen regnes ut fra temaet med en blend()-hjelper framfor en gjettet hex, så feltet ser likt ut som de andre. Android beholder sin dialog.

Beløp og dato deler nå rad. Begge er korte verdier, feltene blir like høye, og skjemaet blir en rad kortere.

2. Bunnark var hvite i mørk modus

Arkene brukte bg-primary-foreground som flate. Den er #fafafa i lys og #ffffff i mørk — nesten hvit i begge — fordi den er ment som tekstfarge oppå primærknapper. I mørk modus ble arket hvitt mens text-foreground ble hvit tekst, så overskriftene forsvant. Lys modus så riktig ut ved en tilfeldighet.

Bruker bg-popover i stedet, som er den mest hevede av temaets tre flateverdier. Feilen lå i alle fem arkene, så alle femten stedene er rettet.

3. To av tre arrangementsfiltre gjorde ingenting

Photon ignorerer ukjente query-parametre i stillhet, så filtrene så ut til å virke: toggelen slo på, chipen dukket opp, lista ble hentet på nytt — og svarte med alt.

Målt mot /api/event:

Forespørsel totalCount
ingen filtre 26
userFavorite=true 26
openForSignUp=true 26
en parameter jeg fant på 26
expired=true (kontroll) 1202
openSignUp=true (riktig navn) 0

Fasiten ligger i https://photon.tihlde.org/openapi. /api/event tar pageSize, page, search, category, expired, openSignUp, organizerGroupSlug og ordering.

  • Påmelding het openSignUp, ikke openForSignUp. Ren navnefeil.
  • Favoritter finnes ikke som listefilter i det hele tatt. Token var nødvendig, men ikke nok — jeg målte 26 også autentisert. Det eneste som finnes er GET /api/event/favorite, som gir en tynn form uten bilde, arrangør eller sted, så hver favoritt slås opp mot /event/{id}. Lista er ikke paginert og favoritter er få, så alt hentes i én omgang og søk og tidligere/kommende filtreres lokalt.

Opprydding i skjemafelt

Felt som lot enheten gjøre feil jobb:

  • Navn fikk autoCapitalize="words" og name-hint; E-post fikk autoCorrect={false} og emailAddress-hint. Autokorrektur på en e-postadresse gjør mer skade enn nytte.
  • De tre søkefeltene fikk inputMode og returnKeyType="search". clearButtonMode er utelatt med vilje — alle tre har allerede en egen X som deler plass med en spinner.
  • E-postvalideringen var .includes("@"), som slapp gjennom "@". Beløp fikk maxLength, og kontonummer sier nå fra mens man skriver hvor mange siffer som mangler.

Testing

Kjørt i simulator på iPhone 17 Pro gjennom hele arbeidet.

  • Datovelger: åpner kalenderen, dato velges, feltet viser riktig norsk dato. Bekreftet av en faktisk fingertrykk — mine syntetiske trykk når ikke Pressable-er i denne appen, noe som kostet et par feilslutninger underveis.
  • Mørk modus: arket har flate i begge temaer. Krevde expo start --clearbg-popover var ny i kodebasen, så NativeWind hadde aldri generert klassen og den ble til ingenting.
  • Favorittfilteret: verifisert ende til ende ved å midlertidig sette filteret på som standard. Lista ga ett kort, «Obs! Jeg kom feil!», mot 26 før. Testoppsettet er fjernet igjen.
  • tsc --noEmit gir 62 feil både på ren main og med denne grenen — identisk, så ingen er innført. Alle er preeksisterende. expo lint: 0 feil, 5 preeksisterende advarsler.

Verdt å se på senere

Ikke rørt her, men funnet underveis:

  • lib/timeformat.ts er død kode med to reelle feil: minutter uten nullpadding (14:5) og feil ukedagsnavn (getDay() er 0 = søndag, men arrayet starter på «Man»). Ingenting importerer den.
  • components/ui/input.tsx og components/ui/floating-label-input.tsx er også ubrukte.
  • Trefflaten på datofeltet er bare der kontrollen ligger under lokket, ikke helt ut til ikonet. Feltet er kort nok til at det knapt merkes, men kan strammes.

🤖 Generated with Claude Code

MathiasStrom and others added 3 commits August 15, 2026 13:33
Datovelgeren som ble merget i #127 brukte et inline «spinner»-hjul. Det
kollapser til null høyde under den nye arkitekturen i SDK 54, så feltet
var dødt å trykke på. Verifisert i simulator.

iOS bruker nå Apples kompakte kontroll, som åpner kalenderen sin selv.
Pillen den tegner rundt datoen lar seg ikke style bort, så den synlige
raden legges oppå som et lokk med pointerEvents="none": pillen skjules,
og trykk går rett gjennom. Lokket må være ugjennomsiktig, og fargen
regnes ut fra temaet med en blend()-hjelper i stedet for en gjettet hex,
slik at feltet ser likt ut som de andre. Android beholder sin dialog.

Beløp og dato deler nå rad. Begge er korte verdier, feltene blir like
høye og vertikalt likestilte, og skjemaet blir en rad kortere.

Rydder samtidig opp i felt som lot enheten gjøre feil jobb:

- Navn får autoCapitalize="words" og name-hint; e-post får
  autoCorrect={false} og emailAddress-hint. Autokorrektur på en
  e-postadresse gjør mer skade enn nytte.
- De tre søkefeltene får inputMode og returnKeyType "search", så
  tastaturet viser en søketast. clearButtonMode er utelatt med vilje:
  alle tre har allerede en egen X som deler plass med en spinner.
- E-postvalideringen var .includes("@"), som slapp gjennom "@". Beløp
  får maxLength så taket ikke bare avvises i etterkant, og kontonummer
  sier fra mens man skriver hvor mange siffer som mangler i stedet for
  å tie til man trykker Send inn.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Arkene brukte bg-primary-foreground som flate. Den er #fafafa i lys og
#ffffff i mørk modus — nesten hvit i begge — fordi den er ment som
tekstfarge oppå primærknapper, ikke som bakgrunn. I mørk modus ble arket
dermed hvitt mens text-foreground ble hvit tekst, så overskriftene i
filteret forsvant. Lys modus så riktig ut ved en tilfeldighet: der er
hvit uansett rett.

Bruker bg-popover i stedet. Temaet har tre flateverdier som er like i
lys modus, men ulike i mørk: background #030b1a, card #061532 og
popover #091f49. Et bunnark er en overlay-flate, så popover gir arket et
løft over den nedtonede bakgrunnen framfor å smelte sammen med siden.

Samme feil lå i alle fem arkene — filter, arrangementsdetaljer,
deltagerliste, profil og påmelding — så alle femten stedene er rettet.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Photon ignorerer ukjente query-parametre i stillhet, så begge filtrene
så ut til å virke: toggelen slo på, chipen dukket opp, lista ble hentet
på nytt — og svarte med alle arrangementene. Målt mot /api/event ga
userFavorite=true og openForSignUp=true nøyaktig samme 26 treff som en
parameter jeg fant på, mens expired ga 1202.

Fasiten ligger i https://photon.tihlde.org/openapi. /api/event tar
pageSize, page, search, category, expired, openSignUp,
organizerGroupSlug og ordering.

Påmelding het altså openSignUp, ikke openForSignUp. Med riktig navn
filtrerer den: 0 mot 26 uten filter.

Favoritter finnes ikke som listefilter i det hele tatt. Det eneste som
finnes er GET /api/event/favorite, som krever token og svarer med en tynn
form uten bilde, arrangør eller sted — så hver favoritt må slås opp mot
/event/{id} for å kunne vises som kort. Lista er ikke paginert, og
favoritter er få, så alt hentes i én omgang og søk og tidligere/kommende
filtreres lokalt. Faller ett oppslag bort, utelates det i stedet for at
hele lista feiler.

Verifisert i simulator: med favorittfilteret på ga lista ett kort,
«Obs! Jeg kom feil!», mot 26 før.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@MathiasStrom
MathiasStrom merged commit 25ba2c6 into main Aug 15, 2026
This was referenced Aug 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant