chore: small admin tweaks baa09806
Steve · 2026-04-18 07:47 2 file(s) · +4 −2
apps/feeds/src/main.rs +2 −0
79 79
    id: i64,
80 80
    title: String,
81 81
    feed_url: String,
82 +
    site_url: Option<String>,
82 83
    category_name: Option<String>,
83 84
    last_fetched_at: Option<String>,
84 85
    last_error: Option<String>,
387 388
            id: s.id,
388 389
            title: s.title,
389 390
            feed_url: s.feed_url,
391 +
            site_url: s.site_url,
390 392
            category_name: s.category_id.and_then(|id| cat_map.get(&id).cloned()),
391 393
            last_fetched_at: s.last_fetched_at,
392 394
            last_error: s.last_error,
apps/feeds/src/templates/admin.html +2 −2
91 91
        {% for sub in subscriptions %}
92 92
        <div class="feed-item">
93 93
          <h3 class="feed-title">
94 -
            <a href="{{ sub.feed_url }}" target="_blank" rel="noopener noreferrer">{{ sub.title }}</a>
94 +
            <a href="{% if let Some(url) = sub.site_url %}{{ url }}{% else %}{{ sub.feed_url }}{% endif %}" target="_blank" rel="noopener noreferrer">{{ sub.title }}</a>
95 95
          </h3>
96 96
          {% if let Some(last) = sub.last_fetched_at %}
97 97
          <p class="feed-meta"><span class="feed-date">last: {{ last }}</span>{% if let Some(err) = sub.last_error %} <span class="error-msg">· {{ err }}</span>{% endif %}</p>
118 118
          const label = document.getElementById('opml-submit-label');
119 119
          btn.disabled = true;
120 120
          btn.classList.add('loading');
121 -
          label.innerHTML = '<span class="spinner"></span> Importing';
121 +
          label.innerHTML = 'Importing <span class="spinner"></span>';
122 122
        });
123 123
      })();
124 124