bug6251: correct behavior of global and local start tracking button is implemented

This commit is contained in:
masha.kashirina
2026-06-01 19:11:36 +02:00
parent 6716b87c82
commit 72b44e7d5e
2 changed files with 9 additions and 1 deletions
@@ -61,7 +61,10 @@ public class RaceLogTrackingEventManagementRaceImagesBarCell extends ImagesBarCe
result.add(new ImageSpec(ACTION_SET_TRACKING_TIMES, stringMessages.setTrackingTimes(), makeImagePrototype(resources.setTrackingTimes())));
final boolean trackerExists = object.getA().getRaceLogTrackingInfo(object.getB()).raceLogTrackerExists;
final RaceLogTrackingState trackingState = object.getA().getRaceLogTrackingInfo(object.getB()).raceLogTrackingState;
if (trackingState == RaceLogTrackingState.AWAITING_RACE_DEFINITION || (trackingState == RaceLogTrackingState.TRACKING && !trackerExists)) {
// bug6251: also suppress "Start Tracking" when a tracked race is already linked to the slot (e.g. FINISHED after
// stopping tracking) — starting would fail on the server because the tracked race would need to be removed first.
final boolean trackedRaceLinked = object.getA().isTrackedRace(object.getB());
if (!trackedRaceLinked && (trackingState == RaceLogTrackingState.AWAITING_RACE_DEFINITION || (trackingState == RaceLogTrackingState.TRACKING && !trackerExists))) {
result.add(new ImageSpec(ACTION_START_TRACKING, stringMessages.startTracking(), makeImagePrototype(resources.startRaceLogTracking())));
} else if (trackingState == RaceLogTrackingState.TRACKING && trackerExists) {
result.add(new ImageSpec(ACTION_STOP_TRACKING, stringMessages.stopTracking(), makeImagePrototype(resources.stopRaceLogTracking())));
@@ -602,6 +602,11 @@ public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardC
} else if (!getTrackingState(race).isForTracking()) {
allCanStart = false;
allCanStop = false;
// bug6251: a linked tracked race (e.g. FINISHED) has no active tracker but cannot be tracked again
// until the existing tracked race is removed first — disable "Start Tracking" in that case.
} else if (race.getA().isTrackedRace(race.getB())) {
allCanStart = false;
allCanStop = false;
} else {
allCanStop = false;
}