Skip to content

fix: Fixed current streak showing 0 despite having commits today#903

Open
Mahreen-Ahmed wants to merge 2 commits into
DenverCoder1:mainfrom
Mahreen-Ahmed:streak-bugfix
Open

fix: Fixed current streak showing 0 despite having commits today#903
Mahreen-Ahmed wants to merge 2 commits into
DenverCoder1:mainfrom
Mahreen-Ahmed:streak-bugfix

Conversation

@Mahreen-Ahmed
Copy link
Copy Markdown

Problem

Streak shows 0 despite having commits today due to stale cached stats.

Solution

Validate cache freshness before using it. If the streak ends today and has length > 0, use cached data. Otherwise, fetch fresh stats from the GitHub API and update the cache.

Testing

  1. Set GITHUB_TOKEN in .env
  2. Start the PHP server
  3. Test with curl to confirm streak displays correctly

Fixes #896, #902

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the request flow in src/index.php to reduce cases where the rendered streak stats are out of date due to the 24-hour cache (notably when a user has committed today but cached stats still show a currentStreak of 0).

Changes:

  • Refactors “fetch stats + cache” into a shared $fetchFreshStats closure.
  • Adds logic to prefer cached stats, but refresh from the GitHub API when the cached currentStreak appears stale.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/index.php
Comment on lines +73 to 86
// Check for cached stats first (24 hour cache) unless cache is disabled
$stats = $useCache ? getCachedStats($user, $cacheOptions) : null;

if ($stats === null) {
// No cached stats - fetch fresh data from GitHub API
$stats = $fetchFreshStats();
} elseif ($stats["currentStreak"]["length"] == 0 || $stats["currentStreak"]["end"] != date("Y-m-d")) {
// Cached streak may be stale - try refreshing, but fall back to cache on failure
try {
$stats = $fetchFreshStats();
} catch (Exception $e) {
error_log("Failed to fetch fresh stats for user {$user}: " . $e->getMessage());
}
}
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.

Stats not up to date

3 participants