add method
Used to add a scheme.
Implementation
@override
Future<bool> add(ProtocolScheme scheme) async {
final String entry = getEntry(scheme);
final String path = getDesktopFilePath(scheme);
final File file = File(path);
if (await file.exists() == false) {
await file.create(recursive: true);
await file.writeAsString(entry);
} else {
final List<String> lines = (await file.readAsString()).split('\n');
final List<String> mimes = lines
.firstWhereOrNull(
(final String x) => x.startsWith('MimeType='),
)
?.replaceFirst('MimeType=', '')
.split(';') ??
<String>[];
lines.removeWhere((final String x) => x.startsWith('MimeType='));
if (!mimes.contains(scheme.scheme)) {
mimes.add(scheme.scheme);
}
await file.writeAsString(
<String>[...lines, 'MimeType=${mimes.join(';')}'].join('\n'),
);
}
await installDesktopFile(path, scheme);
return true;
}