mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
792573f46d
* feat: add tooltip for maximum image size * feat: add maximum upload image size tooltip * feat: limit image size to 10MB * fix: disable copy link option for cloud image * fix: disable copy link option for cloud image * feat: use regex to match the appflowy.cloud image
39 lines
999 B
Dart
39 lines
999 B
Dart
import 'dart:io';
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
extension StringExtension on String {
|
|
static const _specialCharacters = r'\/:*?"<>| ';
|
|
|
|
/// Encode a string to a file name.
|
|
///
|
|
/// Normalizes the string to remove special characters and replaces the "\/:*?"<>|" with underscores.
|
|
String toFileName() {
|
|
final buffer = StringBuffer();
|
|
for (final character in characters) {
|
|
if (_specialCharacters.contains(character)) {
|
|
buffer.write('_');
|
|
} else {
|
|
buffer.write(character);
|
|
}
|
|
}
|
|
return buffer.toString();
|
|
}
|
|
|
|
/// Returns the file size of the file at the given path.
|
|
///
|
|
/// Returns null if the file does not exist.
|
|
int? get fileSize {
|
|
final file = File(this);
|
|
if (file.existsSync()) {
|
|
return file.lengthSync();
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/// Returns if the string is a appflowy cloud url.
|
|
bool get isAppFlowyCloudUrl {
|
|
return RegExp(r'^(https:\/\/)(.*)(\.appflowy\.cloud\/)(.*)').hasMatch(this);
|
|
}
|
|
}
|