mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2026-07-31 07:44:24 +02:00
Huawei: Quick fix for workout count mismatch
As suggested by Me7c7 in #4857.
This commit is contained in:
+19
-2
@@ -16,13 +16,21 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>. */
|
||||
package nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests;
|
||||
|
||||
import android.widget.Toast;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiPacket;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.packets.Workout;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.HuaweiSupportProvider;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||
|
||||
public class GetWorkoutCountRequest extends Request {
|
||||
private static final Logger LOG = LoggerFactory.getLogger(GetWorkoutCountRequest.class);
|
||||
|
||||
private final int start;
|
||||
private final int end;
|
||||
|
||||
@@ -72,8 +80,17 @@ public class GetWorkoutCountRequest extends Request {
|
||||
|
||||
Workout.WorkoutCount.Response packet = (Workout.WorkoutCount.Response) receivedPacket;
|
||||
|
||||
if (packet.count != packet.workoutNumbers.size())
|
||||
throw new WorkoutParseException("Packet count and workout numbers size do not match.");
|
||||
if (packet.count > packet.workoutNumbers.size()) {
|
||||
LOG.warn("Packet count is greater than workoutNumbers size: {} > {}", packet.count, packet.workoutNumbers.size());
|
||||
GB.toast("Workout count mismatch, after this sync is complete, try synchronising again", Toast.LENGTH_LONG, GB.WARN);
|
||||
|
||||
packet.count = (short) packet.workoutNumbers.size();
|
||||
} else if (packet.count < packet.workoutNumbers.size()) {
|
||||
LOG.warn("Packet count is smaller than workoutNumbers size: {} < {}", packet.count, packet.workoutNumbers.size());
|
||||
GB.toast("Workout count mismatch, after this sync is complete, try synchronising again", Toast.LENGTH_LONG, GB.WARN);
|
||||
|
||||
packet.workoutNumbers.subList(packet.count, packet.workoutNumbers.size()).clear();
|
||||
}
|
||||
|
||||
if (packet.count > 0) {
|
||||
GetWorkoutTotalsRequest nextRequest = new GetWorkoutTotalsRequest(
|
||||
|
||||
Reference in New Issue
Block a user