Skip to content

Commit b8bcb3b

Browse files
committed
Fixes #281
1 parent d7376cf commit b8bcb3b

File tree

4 files changed

+16
-5
lines changed

4 files changed

+16
-5
lines changed

lib/src/adapter/remote_adapter.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ mixin _RemoteAdapter<T extends DataModelMixin<T>> on _SerializationAdapter<T> {
88
///
99
/// For specific paths to this type [T], see [urlForFindAll], [urlForFindOne], etc
1010
@protected
11-
String get baseUrl => 'https://override-base-url-in-adapter/';
11+
String get baseUrl => 'https://override-base-url-in-adapter';
1212

1313
/// Returns whether calling [findAll] should trigger a remote call.
1414
///

lib/src/utils/extensions.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,11 @@ extension MapUtilsX<K, V> on Map<K, V> {
104104

105105
extension UriUtilsX on Uri {
106106
Uri operator /(String path) {
107-
return replace(path: path_helper.posix.normalize('/${this.path}/$path'));
107+
final argUri = Uri.parse(path);
108+
return replace(
109+
path: path_helper.posix.normalize('/${this.path}/${argUri.path}'),
110+
) &
111+
argUri.queryParameters;
108112
}
109113

110114
Uri operator &(Map<String, dynamic> params) => params.isNotEmpty

test/_support/person.dart

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,12 +106,17 @@ mixin PersonLoginAdapter on Adapter<Person> {
106106
Future<String?> url(Map<String, dynamic> params,
107107
{bool useDefaultParams = false}) async {
108108
return await sendRequest(
109-
baseUrl.asUri / 'url' & params,
109+
baseUrl.asUri / urlForFindOne('url', params) & params,
110110
onSuccess: (data, _) =>
111111
(data.body as Map<String, dynamic>?)?['url'].toString(),
112112
omitDefaultParams: !useDefaultParams,
113113
);
114114
}
115+
116+
@override
117+
String urlForFindOne(id, Map<String, dynamic> params) {
118+
return 'endpoint?url=$id';
119+
}
115120
}
116121

117122
mixin GenericDoesNothingAdapter<T extends DataModel<T>> on Adapter<T> {

test/repository/remote_adapter_test.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,10 +96,12 @@ void main() async {
9696
container.read(responseProvider.notifier).state = TestResponse(
9797
(req) async => '{"url" : "${req.url.toString()}"}',
9898
);
99+
100+
// also tests overridden `urlForFindOne` in Person
99101
expect(await adapter.url({'a': 1}),
100-
'https://override-base-url-in-adapter/url?a=1');
102+
'https://override-base-url-in-adapter/endpoint?url=url&a=1');
101103
expect(await adapter.url({'b': 2}, useDefaultParams: true),
102-
'https://override-base-url-in-adapter/url?b=2&default=true');
104+
'https://override-base-url-in-adapter/endpoint?url=url&b=2&default=true');
103105
});
104106

105107
test('can override type', () {

0 commit comments

Comments
 (0)