Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.

Commit 4b4913c

Browse files
authored
[file_selector_platform_interface]: Verify that extensions don't have leading dots. (#3451)
1 parent 4afca62 commit 4b4913c

File tree

5 files changed

+24
-10
lines changed

5 files changed

+24
-10
lines changed

packages/file_selector/file_selector_platform_interface/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 2.0.1
2+
3+
* Replace extensions with leading dots.
4+
15
## 2.0.0
26

37
* Migration to null-safety

packages/file_selector/file_selector_platform_interface/lib/src/types/x_type_group/x_type_group.dart

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ class XTypeGroup {
1010
/// allowed.
1111
XTypeGroup({
1212
this.label,
13-
this.extensions,
13+
List<String>? extensions,
1414
this.mimeTypes,
1515
this.macUTIs,
1616
this.webWildCards,
17-
});
17+
}) : this.extensions = _removeLeadingDots(extensions);
1818

1919
/// The 'name' or reference to this group of types
2020
final String? label;
@@ -41,4 +41,7 @@ class XTypeGroup {
4141
'webWildCards': webWildCards,
4242
};
4343
}
44+
45+
static List<String>? _removeLeadingDots(List<String>? exts) =>
46+
exts?.map((ext) => ext.startsWith('.') ? ext.substring(1) : ext).toList();
4447
}

packages/file_selector/file_selector_platform_interface/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ description: A common platform interface for the file_selector plugin.
33
homepage: https://github.com/flutter/plugins/tree/master/packages/file_selector/file_selector_platform_interface
44
# NOTE: We strongly prefer non-breaking changes, even at the expense of a
55
# less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes
6-
version: 2.0.0
6+
version: 2.0.1
77

88
dependencies:
99
flutter:

packages/file_selector/file_selector_platform_interface/test/method_channel_file_selector_test.dart

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,14 @@ void main() {
2929
test('passes the accepted type groups correctly', () async {
3030
final group = XTypeGroup(
3131
label: 'text',
32-
extensions: ['.txt'],
32+
extensions: ['txt'],
3333
mimeTypes: ['text/plain'],
3434
macUTIs: ['public.text'],
3535
);
3636

3737
final groupTwo = XTypeGroup(
3838
label: 'image',
39-
extensions: ['.jpg'],
39+
extensions: ['jpg'],
4040
mimeTypes: ['image/jpg'],
4141
macUTIs: ['public.image'],
4242
webWildCards: ['image/*']);
@@ -90,14 +90,14 @@ void main() {
9090
test('passes the accepted type groups correctly', () async {
9191
final group = XTypeGroup(
9292
label: 'text',
93-
extensions: ['.txt'],
93+
extensions: ['txt'],
9494
mimeTypes: ['text/plain'],
9595
macUTIs: ['public.text'],
9696
);
9797

9898
final groupTwo = XTypeGroup(
9999
label: 'image',
100-
extensions: ['.jpg'],
100+
extensions: ['jpg'],
101101
mimeTypes: ['image/jpg'],
102102
macUTIs: ['public.image'],
103103
webWildCards: ['image/*']);
@@ -152,14 +152,14 @@ void main() {
152152
test('passes the accepted type groups correctly', () async {
153153
final group = XTypeGroup(
154154
label: 'text',
155-
extensions: ['.txt'],
155+
extensions: ['txt'],
156156
mimeTypes: ['text/plain'],
157157
macUTIs: ['public.text'],
158158
);
159159

160160
final groupTwo = XTypeGroup(
161161
label: 'image',
162-
extensions: ['.jpg'],
162+
extensions: ['jpg'],
163163
mimeTypes: ['image/jpg'],
164164
macUTIs: ['public.image'],
165165
webWildCards: ['image/*']);

packages/file_selector/file_selector_platform_interface/test/x_type_group_test.dart

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ void main() {
99
group('XTypeGroup', () {
1010
test('toJSON() creates correct map', () {
1111
final label = 'test group';
12-
final extensions = ['.txt', '.jpg'];
12+
final extensions = ['txt', 'jpg'];
1313
final mimeTypes = ['text/plain'];
1414
final macUTIs = ['public.plain-text'];
1515
final webWildCards = ['image/*'];
@@ -41,5 +41,12 @@ void main() {
4141
expect(jsonMap['macUTIs'], null);
4242
expect(jsonMap['webWildCards'], null);
4343
});
44+
45+
test('Leading dots are removed from extensions', () {
46+
final extensions = ['.txt', '.jpg'];
47+
final group = XTypeGroup(extensions: extensions);
48+
49+
expect(group.extensions, ['txt', 'jpg']);
50+
});
4451
});
4552
}

0 commit comments

Comments
 (0)