From 45412f84b942305b8dde263e1e3a27acdf5dbbd8 Mon Sep 17 00:00:00 2001 From: evgeny Date: Thu, 16 Oct 2025 14:24:54 +0100 Subject: [PATCH] fix: enforce `Locale.ROOT` for string formatting in `StreamsChannel` - Updated `String.format` calls to use `Locale.ROOT` to ensure consistent formatting regardless of device locale configuration. - Removed unnecessary `@SuppressLint` annotation. --- .github/workflows/flutter_integration.yaml | 7 +------ .../main/java/io/ably/flutter/plugin/StreamsChannel.java | 8 +++----- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/.github/workflows/flutter_integration.yaml b/.github/workflows/flutter_integration.yaml index b131162a1..fd49de9bf 100644 --- a/.github/workflows/flutter_integration.yaml +++ b/.github/workflows/flutter_integration.yaml @@ -7,11 +7,6 @@ on: jobs: ios: - strategy: - matrix: - device: # Device names must be shown in `xcrun simctl list devices` - - 'iPhone 15' # we are not specifying the iOS version as it tends to change - fail-fast: false runs-on: macos-latest steps: - uses: actions/checkout@v4 @@ -22,7 +17,7 @@ jobs: - uses: subosito/flutter-action@v2 with: - flutter-version: '3.24' + flutter-version: '3.29' cache: true # test_integration package depends on ably_flutter, so before we run integration diff --git a/android/src/main/java/io/ably/flutter/plugin/StreamsChannel.java b/android/src/main/java/io/ably/flutter/plugin/StreamsChannel.java index 547c5e4c9..5c476fa15 100644 --- a/android/src/main/java/io/ably/flutter/plugin/StreamsChannel.java +++ b/android/src/main/java/io/ably/flutter/plugin/StreamsChannel.java @@ -20,11 +20,10 @@ package io.ably.flutter.plugin; -import android.annotation.SuppressLint; - import androidx.annotation.UiThread; import java.nio.ByteBuffer; +import java.util.Locale; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicBoolean; @@ -160,7 +159,7 @@ void clearAll() { } private void logError(long id, String message, Throwable e) { - Log.e(TAG + name, String.format("%s [id=%d]", message, id), e); + Log.e(TAG + name, String.format(Locale.ROOT, "%s [id=%d]", message, id), e); } private final class EventSinkImplementation implements EventChannel.EventSink { @@ -169,10 +168,9 @@ private final class EventSinkImplementation implements EventChannel.EventSink { final String name; final AtomicBoolean hasEnded = new AtomicBoolean(false); - @SuppressLint("DefaultLocale") private EventSinkImplementation(long id) { this.id = id; - this.name = String.format("%s#%d", StreamsChannel.this.name, id); + this.name = String.format(Locale.ROOT, "%s#%d", StreamsChannel.this.name, id); } @Override