refactor SupporterTier

This commit is contained in:
galister 2026-08-09 18:45:48 +09:00
parent 77b5004541
commit 345fe7b3ac
2 changed files with 31 additions and 19 deletions

View File

@ -64,35 +64,22 @@ async fn request_supporters(tasks: Tasks<Task>) {
}
}
fn tier_pretty_print(tier: &str) -> String {
format!("{} Tier", wlx_common::locale::capitalize_string(tier))
}
fn tier_color(tier: &str) -> &'static str {
match tier {
"platinum" => "#aaffff",
"gold" => "#ffffaa",
"silver" => "#cccccc",
"bronze" => "#ffaa66",
_ => "on_background",
}
}
impl<T> TabDonate<T> {
fn set_supporters(&mut self, layout: &mut Layout, supporters: cached_fetcher::Supporters) -> anyhow::Result<()> {
let globals = layout.state.globals.clone();
layout.remove_children(self.id_current_supporters);
let mut current_tier = "";
let mut current_tier = None;
let mut tier_parent = WidgetID::default();
for supporter in &supporters.supporters {
if supporter.tier != current_tier {
current_tier = &supporter.tier;
if Some(supporter.tier) != current_tier {
current_tier = Some(supporter.tier);
let mut params = TemplateParams::new();
params.insert_str("text", tier_pretty_print(&supporter.tier));
params.insert("color", tier_color(&supporter.tier));
params.insert_str("text", supporter.tier.pretty_str());
params.insert("color", supporter.tier.color_str());
self.state.realize_template(
&doc_params(&globals),
"TierCell",

View File

@ -3,17 +3,42 @@ use std::time::{SystemTime, UNIX_EPOCH};
use crate::util::{networking::http_client, steam_utils::AppID};
use anyhow::Context;
use serde::{Deserialize, Serialize};
use strum::{AsRefStr};
use wlx_common::cache_dir;
fn get_unix_timestamp() -> u64 {
SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_secs()
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, AsRefStr)]
#[serde(rename_all = "snake_case")]
pub enum SupporterTier {
Platinum,
Gold,
Silver,
Bronze,
}
impl SupporterTier {
pub fn pretty_str(self) -> String {
format!("{self:?} Tier")
}
pub fn color_str(self) -> &'static str {
match self {
Self::Platinum => "#aaffff",
Self::Gold => "#ffffaa",
Self::Silver => "#cccccc",
Self::Bronze => "#ffaa66",
}
}
}
#[derive(Serialize, Deserialize)]
pub struct Supporter {
pub username: String,
pub date: String,
pub tier: String,
pub tier: SupporterTier,
pub contribution_count: u32,
}