fix(kattis): fix nil display_name in contest picker

Problem: `ContestSummary.display_name` defaults to `None`, which
serializes to JSON `null` → Lua `vim.NIL`. The picker displayed
"vim.NIL" for every entry, and `start_time` was always stored
because `vim.NIL` is truthy in Lua.

Solution: pass `display_name=name` explicitly in `_parse_contests_page`
so JSON never emits `null`. In `set_contest_summaries`, coerce
`display_name` via a `~= vim.NIL` guard and apply the same guard
before storing `start_time`.
This commit is contained in:
Barrett Ruth 2026-03-06 13:18:05 -05:00
parent 543480a4fe
commit 5e4d3d1b61
Signed by: barrett
GPG key ID: A6C96C9349D2FC81
2 changed files with 3 additions and 3 deletions

View file

@ -396,9 +396,9 @@ function M.set_contest_summaries(platform, contests)
cache_data[platform] = cache_data[platform] or {}
for _, contest in ipairs(contests) do
cache_data[platform][contest.id] = cache_data[platform][contest.id] or {}
cache_data[platform][contest.id].display_name = contest.display_name
cache_data[platform][contest.id].display_name = (contest.display_name ~= vim.NIL and contest.display_name) or contest.name
cache_data[platform][contest.id].name = contest.name
if contest.start_time then
if contest.start_time and contest.start_time ~= vim.NIL then
cache_data[platform][contest.id].start_time = contest.start_time
end
end