Add a slash to copied URLs, Expand item when pressing on the card's title in history view , release 1.3.2+11

This commit is contained in:
Varakh 2021-04-16 19:25:16 +02:00
parent 06eb990eea
commit c0a2e8d569
6 changed files with 36 additions and 15 deletions

View file

@ -1,5 +1,9 @@
# CHANGELOG # CHANGELOG
## 1.3.2+11
* Add a slash to copied URLs
* Expand item when pressing on the card's title in history view
## 1.3.1+10 ## 1.3.1+10
* Added gesture detection for tab bar * Added gesture detection for tab bar
* Disable upload when no files have been attached or upload text input is empty * Disable upload when no files have been attached or upload text input is empty

View file

@ -0,0 +1,6 @@
class PasteUtil {
/// Generate paste link adding a trailing slash
static String generateLink(String url, String id) {
return '$url/$id/';
}
}

View file

@ -22,6 +22,7 @@ import '../services/file_service.dart';
import '../services/link_service.dart'; import '../services/link_service.dart';
import '../services/refresh_service.dart'; import '../services/refresh_service.dart';
import '../util/logger.dart'; import '../util/logger.dart';
import '../util/paste_util.dart';
import 'base_model.dart'; import 'base_model.dart';
class UploadModel extends BaseModel { class UploadModel extends BaseModel {
@ -111,6 +112,22 @@ class UploadModel extends BaseModel {
}); });
} }
String generatePasteLinks(Map<String, bool> uploads, String url) {
if (uploads != null && uploads.length > 0) {
var links = '';
uploads.forEach((id, isMulti) {
if (isMulti && createMulti || !isMulti && !createMulti) {
links += '${PasteUtil.generateLink(url, id)}\n';
}
});
return links;
}
return null;
}
void toggleCreateMulti() { void toggleCreateMulti() {
setStateView(ViewState.Busy); setStateView(ViewState.Busy);
createMulti = !createMulti; createMulti = !createMulti;

View file

@ -8,6 +8,7 @@ import 'package:share/share.dart';
import '../../core/enums/viewstate.dart'; import '../../core/enums/viewstate.dart';
import '../../core/models/session.dart'; import '../../core/models/session.dart';
import '../../core/util/formatter_util.dart'; import '../../core/util/formatter_util.dart';
import '../../core/util/paste_util.dart';
import '../../core/viewmodels/history_model.dart'; import '../../core/viewmodels/history_model.dart';
import '../../ui/widgets/centered_error_row.dart'; import '../../ui/widgets/centered_error_row.dart';
import '../shared/app_colors.dart'; import '../shared/app_colors.dart';
@ -56,7 +57,7 @@ class HistoryView extends StatelessWidget {
model.pastes.reversed.forEach((paste) { model.pastes.reversed.forEach((paste) {
List<Widget> widgets = []; List<Widget> widgets = [];
var fullPasteUrl = '$url/${paste.id}'; var fullPasteUrl = PasteUtil.generateLink(url, paste.id);
var openInBrowserButton = _renderOpenInBrowser(model, fullPasteUrl); var openInBrowserButton = _renderOpenInBrowser(model, fullPasteUrl);
var dateWidget = ListTile( var dateWidget = ListTile(
@ -144,12 +145,11 @@ class HistoryView extends StatelessWidget {
tapHeaderToExpand: true), tapHeaderToExpand: true),
child: ExpandablePanel( child: ExpandablePanel(
header: InkWell( header: InkWell(
onLongPress: () => model.deletePaste(paste.id),
child: Text( child: Text(
paste.id, paste.id,
style: TextStyle(color: blueColor), style: TextStyle(color: blueColor),
textAlign: TextAlign.left, textAlign: TextAlign.left,
)), )),
expanded: Column( expanded: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: widgets, children: widgets,

View file

@ -119,15 +119,9 @@ class UploadView extends StatelessWidget {
? null ? null
: () async { : () async {
Map<String, bool> items = await model.upload(); Map<String, bool> items = await model.upload();
String clipboardContent = model.generatePasteLinks(items, url);
if (items != null) { if (clipboardContent != null && clipboardContent.isNotEmpty) {
var clipboardContent = '';
items.forEach((id, isMulti) {
if (isMulti && model.createMulti || !isMulti && !model.createMulti) {
clipboardContent += '$url/$id\n';
}
});
FlutterClipboard.copy(clipboardContent).then((value) { FlutterClipboard.copy(clipboardContent).then((value) {
final snackBar = SnackBar( final snackBar = SnackBar(
action: SnackBarAction( action: SnackBarAction(

View file

@ -11,7 +11,7 @@ description: A mobile client for FileBin.
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at # Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.3.1+10 version: 1.3.2+11
environment: environment:
sdk: ">=2.7.0 <3.0.0" sdk: ">=2.7.0 <3.0.0"