Skip to content

Commit 9157f8c

Browse files
refactor!: hide debouncing and throttling fields from public API
refactor!: rename baseService to _languageCheckService move debounce and throttling decorators to wrappers folder rename LangToolService to LanguageToolService
1 parent 054459f commit 9157f8c

File tree

6 files changed

+65
-69
lines changed

6 files changed

+65
-69
lines changed

lib/languagetool_textfield.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ export 'src/domain/highlight_style.dart';
1212
export 'src/domain/language_check_service.dart';
1313
export 'src/domain/mistake.dart';
1414
export 'src/domain/writing_mistake.dart';
15-
export 'src/implementations/debounce_lang_tool_service.dart';
16-
export 'src/implementations/lang_tool_service.dart';
17-
export 'src/implementations/throttling_lang_tool_service.dart';
15+
export 'src/language_check_services/language_tool_service.dart';
1816
export 'src/presentation/language_tool_text_field.dart';
1917
export 'src/utils/mistake_popup.dart';
2018
export 'src/utils/popup_overlay_renderer.dart';
19+
export 'src/wrappers/debounce_language_tool_service.dart';
20+
export 'src/wrappers/throttling_language_tool_service.dart';

lib/src/core/controllers/language_tool_controller.dart

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,10 @@ import 'dart:math';
33
import 'package:collection/collection.dart';
44
import 'package:flutter/gestures.dart';
55
import 'package:flutter/material.dart';
6-
import 'package:languagetool_textfield/src/client/language_tool_client.dart';
7-
import 'package:languagetool_textfield/src/core/enums/delay_type.dart';
6+
import 'package:languagetool_textfield/languagetool_textfield.dart';
87
import 'package:languagetool_textfield/src/core/enums/mistake_type.dart';
9-
import 'package:languagetool_textfield/src/domain/highlight_style.dart';
10-
import 'package:languagetool_textfield/src/domain/language_check_service.dart';
11-
import 'package:languagetool_textfield/src/domain/mistake.dart';
12-
import 'package:languagetool_textfield/src/implementations/debounce_lang_tool_service.dart';
13-
import 'package:languagetool_textfield/src/implementations/lang_tool_service.dart';
14-
import 'package:languagetool_textfield/src/implementations/throttling_lang_tool_service.dart';
158
import 'package:languagetool_textfield/src/utils/closed_range.dart';
169
import 'package:languagetool_textfield/src/utils/keep_latest_response_service.dart';
17-
import 'package:languagetool_textfield/src/utils/mistake_popup.dart';
1810

1911
/// A TextEditingController with overrides buildTextSpan for building
2012
/// marked TextSpans with tap recognizer
@@ -127,15 +119,15 @@ class LanguageToolController extends TextEditingController {
127119
required Duration delay,
128120
required LanguageToolClient languageToolClient,
129121
}) {
130-
final languageToolService = LangToolService(languageToolClient);
122+
final languageToolService = LanguageToolService(languageToolClient);
131123

132124
if (delay == Duration.zero) return languageToolService;
133125

134126
switch (delayType) {
135127
case DelayType.debouncing:
136-
return DebounceLangToolService(languageToolService, delay);
128+
return DebounceLanguageToolService(languageToolService, delay);
137129
case DelayType.throttling:
138-
return ThrottlingLangToolService(languageToolService, delay);
130+
return ThrottlingLanguageToolService(languageToolService, delay);
139131
}
140132
}
141133

lib/src/implementations/debounce_lang_tool_service.dart

Lines changed: 0 additions & 38 deletions
This file was deleted.

lib/src/implementations/lang_tool_service.dart renamed to lib/src/language_check_services/language_tool_service.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import 'package:languagetool_textfield/src/domain/writing_mistake.dart';
55
import 'package:languagetool_textfield/src/utils/result.dart';
66

77
/// An implementation of language check service with language tool service.
8-
class LangToolService extends LanguageCheckService {
8+
class LanguageToolService extends LanguageCheckService {
99
/// An instance of this class that is used to interact with LanguageTool API.
1010
final LanguageToolClient languageTool;
1111

@@ -17,8 +17,8 @@ class LangToolService extends LanguageCheckService {
1717
languageTool.language = language;
1818
}
1919

20-
/// Creates a new instance of the [LangToolService].
21-
LangToolService(this.languageTool);
20+
/// Creates a new instance of the [LanguageToolService].
21+
LanguageToolService(this.languageTool);
2222

2323
@override
2424
Future<Result<List<Mistake>>> findMistakes(String text) async {
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import 'package:languagetool_textfield/src/domain/language_check_service.dart';
2+
import 'package:languagetool_textfield/src/domain/mistake.dart';
3+
import 'package:languagetool_textfield/src/utils/result.dart';
4+
import 'package:throttling/throttling.dart';
5+
6+
/// A language check service with debouncing.
7+
class DebounceLanguageToolService extends LanguageCheckService {
8+
/// A base language check service.
9+
final LanguageCheckService _languageCheckService;
10+
11+
/// A debouncing used to debounce the API calls.
12+
final Debouncing<Future<Result<List<Mistake>>?>> _debouncing;
13+
14+
@override
15+
String get language => _languageCheckService.language;
16+
17+
@override
18+
set language(String language) {
19+
_languageCheckService.language = language;
20+
}
21+
22+
/// Creates a new instance of the [DebounceLanguageToolService] class.
23+
DebounceLanguageToolService(
24+
this._languageCheckService,
25+
Duration debouncingDuration,
26+
) : _debouncing = Debouncing(duration: debouncingDuration);
27+
28+
@override
29+
Future<Result<List<Mistake>>?> findMistakes(String text) async {
30+
return await _debouncing
31+
.debounce(() => _languageCheckService.findMistakes(text));
32+
}
33+
34+
// ignore: proper_super_calls
35+
@override
36+
Future<void> dispose() async {
37+
_debouncing.close();
38+
await _languageCheckService.dispose();
39+
}
40+
}

lib/src/implementations/throttling_lang_tool_service.dart renamed to lib/src/wrappers/throttling_language_tool_service.dart

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,36 +4,38 @@ import 'package:languagetool_textfield/src/utils/result.dart';
44
import 'package:throttling/throttling.dart';
55

66
/// A language check service with debouncing.
7-
class ThrottlingLangToolService extends LanguageCheckService {
7+
class ThrottlingLanguageToolService extends LanguageCheckService {
88
/// A base language check service that is used to interact
99
/// with the language check API.
10-
final LanguageCheckService baseService;
10+
final LanguageCheckService _languageCheckService;
1111

1212
/// A throttling used to throttle the API calls.
13-
final Throttling<Future<Result<List<Mistake>>?>> throttling;
13+
final Throttling<Future<Result<List<Mistake>>?>> _throttling;
1414

1515
@override
16-
String get language => baseService.language;
16+
String get language => _languageCheckService.language;
1717

1818
@override
1919
set language(String language) {
20-
baseService.language = language;
20+
_languageCheckService.language = language;
2121
}
2222

23-
/// Creates a new instance of the [ThrottlingLangToolService] class.
24-
ThrottlingLangToolService(
25-
this.baseService,
23+
/// Creates a new instance of the [ThrottlingLanguageToolService] class.
24+
ThrottlingLanguageToolService(
25+
this._languageCheckService,
2626
Duration throttlingDuration,
27-
) : throttling = Throttling(duration: throttlingDuration);
27+
) : _throttling = Throttling(duration: throttlingDuration);
2828

2929
@override
30-
Future<Result<List<Mistake>>?> findMistakes(String text) async =>
31-
throttling.throttle(() => baseService.findMistakes(text));
30+
Future<Result<List<Mistake>>?> findMistakes(String text) async {
31+
return await _throttling
32+
.throttle(() => _languageCheckService.findMistakes(text));
33+
}
3234

3335
// ignore: proper_super_calls
3436
@override
3537
Future<void> dispose() async {
36-
throttling.close();
37-
await baseService.dispose();
38+
_throttling.close();
39+
await _languageCheckService.dispose();
3840
}
3941
}

0 commit comments

Comments
 (0)