mirror of
https://github.com/block/buzz.git
synced 2026-11-05 17:01:35 +00:00
## Summary - refine mobile message metadata, search spacing, and Activity filter semantics - add channel-parity Latest navigation and stable tail following to threads - synchronize Android composer/keyboard geometry and keep Latest spacing stable across IME transitions ## Validation - `bin/just mobile-check` - `bin/just mobile-test` (1,276 tests) - Pixel 10 install/launch and channel/thread keyboard, Latest, tail, and back-navigation review - signed iPhone install/launch workflow ## Snapshots See the review snapshots below. --------- Signed-off-by: kenny lopez <klopez4212@gmail.com> Signed-off-by: Kenny Lopez <klopez4212@gmail.com> Signed-off-by: Princess Donut <b238ea756dee4d98afa5883fc7f1de61eeabe65bf700e3a5a5a80db5e42e2c2b@buzz.block.builderlab.xyz> Co-authored-by: Fast Fizz <2df81cb51f05a9d5387ef24d7b9ecb8fcdfcd1c70ffabc67061c9596e1b5b1c4@buzz.block.builderlab.xyz> Co-authored-by: Princess Donut <b238ea756dee4d98afa5883fc7f1de61eeabe65bf700e3a5a5a80db5e42e2c2b@buzz.block.builderlab.xyz>
50 lines
1.5 KiB
Dart
50 lines
1.5 KiB
Dart
import 'package:buzz/features/channels/ime_metrics_settle_observer.dart';
|
|
import 'package:flutter/foundation.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
|
|
void main() {
|
|
testWidgets('coalesces Android IME metrics until the viewport settles', (
|
|
tester,
|
|
) async {
|
|
final previousPlatform = debugDefaultTargetPlatformOverride;
|
|
debugDefaultTargetPlatformOverride = TargetPlatform.android;
|
|
try {
|
|
var callbacks = 0;
|
|
final observer = ImeMetricsSettleObserver(
|
|
onMetricsSettled: () => callbacks += 1,
|
|
);
|
|
addTearDown(observer.dispose);
|
|
|
|
observer.didChangeMetrics();
|
|
await tester.pump(const Duration(milliseconds: 60));
|
|
observer.didChangeMetrics();
|
|
await tester.pump(const Duration(milliseconds: 119));
|
|
expect(callbacks, 0);
|
|
|
|
await tester.pump(const Duration(milliseconds: 1));
|
|
expect(callbacks, 1);
|
|
} finally {
|
|
debugDefaultTargetPlatformOverride = previousPlatform;
|
|
}
|
|
});
|
|
|
|
testWidgets('keeps non-Android metrics callbacks immediate', (tester) async {
|
|
final previousPlatform = debugDefaultTargetPlatformOverride;
|
|
debugDefaultTargetPlatformOverride = TargetPlatform.iOS;
|
|
try {
|
|
var callbacks = 0;
|
|
final observer = ImeMetricsSettleObserver(
|
|
onMetricsSettled: () => callbacks += 1,
|
|
);
|
|
addTearDown(observer.dispose);
|
|
|
|
observer.didChangeMetrics();
|
|
observer.didChangeMetrics();
|
|
|
|
expect(callbacks, 2);
|
|
} finally {
|
|
debugDefaultTargetPlatformOverride = previousPlatform;
|
|
}
|
|
});
|
|
}
|