mirror of
https://github.com/twonlyapp/twonly-app.git
synced 2026-01-15 13:08:42 +00:00
fixed some smaller issues
Some checks are pending
Flutter analyze & test / flutter_analyze_and_test (push) Waiting to run
Some checks are pending
Flutter analyze & test / flutter_analyze_and_test (push) Waiting to run
This commit is contained in:
parent
049507cd25
commit
c91c53dd8b
9 changed files with 138 additions and 92 deletions
|
|
@ -207,13 +207,15 @@
|
||||||
"proFeature1": "✓ Unbegrenzte Medien-Datei-Uploads",
|
"proFeature1": "✓ Unbegrenzte Medien-Datei-Uploads",
|
||||||
"proFeature2": "✓ 1 zusätzlicher Plus Benutzer",
|
"proFeature2": "✓ 1 zusätzlicher Plus Benutzer",
|
||||||
"proFeature3": "✓ Flammen wiederherstellen",
|
"proFeature3": "✓ Flammen wiederherstellen",
|
||||||
"proFeature4": "✓ Cloud-Backup verschlüsselt (coming-soon)",
|
"proFeature4": "✓ twonly unterstützen",
|
||||||
"year": "Jahr",
|
"year": "Jahr",
|
||||||
"month": "Monat",
|
"month": "Monat",
|
||||||
"yearly": "Jährlich",
|
"yearly": "Jährlich",
|
||||||
"monthly": "Monatlich",
|
"monthly": "Monatlich",
|
||||||
"familyFeature1": "✓ Alles von Pro",
|
"familyFeature1": "✓ Unbegrenzte Medien-Datei-Uploads",
|
||||||
"familyFeature2": "✓ 4 zusätzliche Plus Benutzer",
|
"familyFeature2": "✓ 4 zusätzliche Plus Benutzer",
|
||||||
|
"familyFeature3": "✓ Flammen wiederherstellen",
|
||||||
|
"familyFeature4": "✓ twonly unterstützen",
|
||||||
"redeemUserInviteCode": "Oder löse einen twonly-Code ein.",
|
"redeemUserInviteCode": "Oder löse einen twonly-Code ein.",
|
||||||
"freeFeature1": "✓ 10 Medien-Datei-Uploads pro Tag",
|
"freeFeature1": "✓ 10 Medien-Datei-Uploads pro Tag",
|
||||||
"plusFeature1": "✓ Unbegrenzte Medien-Datei-Uploads",
|
"plusFeature1": "✓ Unbegrenzte Medien-Datei-Uploads",
|
||||||
|
|
|
||||||
|
|
@ -240,10 +240,12 @@
|
||||||
"monthly": "Monthly",
|
"monthly": "Monthly",
|
||||||
"proFeature1": "✓ Unlimited media file uploads",
|
"proFeature1": "✓ Unlimited media file uploads",
|
||||||
"proFeature2": "✓ 1 additional Plus user",
|
"proFeature2": "✓ 1 additional Plus user",
|
||||||
"proFeature3": "✓ Cloud-Backup encrypted (coming-soon)",
|
"proFeature3": "✓ Restore flames",
|
||||||
"proFeature4": "Additional features (coming-soon)",
|
"proFeature4": "✓ Support twonly",
|
||||||
"familyFeature1": "✓ All from Pro",
|
"familyFeature1": "✓ Unlimited media file uploads",
|
||||||
"familyFeature2": "✓ 4 additional Plus users",
|
"familyFeature2": "✓ 4 additional Plus user",
|
||||||
|
"familyFeature3": "✓ Restore flames",
|
||||||
|
"familyFeature4": "✓ Support twonly",
|
||||||
"redeemUserInviteCode": "Or redeem a twonly-Code.",
|
"redeemUserInviteCode": "Or redeem a twonly-Code.",
|
||||||
"redeemUserInviteCodeTitle": "Redeem twonly-Code",
|
"redeemUserInviteCodeTitle": "Redeem twonly-Code",
|
||||||
"redeemUserInviteCodeSuccess": "Your plan has been successfully adjusted.",
|
"redeemUserInviteCodeSuccess": "Your plan has been successfully adjusted.",
|
||||||
|
|
|
||||||
|
|
@ -1361,27 +1361,39 @@ abstract class AppLocalizations {
|
||||||
/// No description provided for @proFeature3.
|
/// No description provided for @proFeature3.
|
||||||
///
|
///
|
||||||
/// In en, this message translates to:
|
/// In en, this message translates to:
|
||||||
/// **'✓ Cloud-Backup encrypted (coming-soon)'**
|
/// **'✓ Restore flames'**
|
||||||
String get proFeature3;
|
String get proFeature3;
|
||||||
|
|
||||||
/// No description provided for @proFeature4.
|
/// No description provided for @proFeature4.
|
||||||
///
|
///
|
||||||
/// In en, this message translates to:
|
/// In en, this message translates to:
|
||||||
/// **'Additional features (coming-soon)'**
|
/// **'✓ Support twonly'**
|
||||||
String get proFeature4;
|
String get proFeature4;
|
||||||
|
|
||||||
/// No description provided for @familyFeature1.
|
/// No description provided for @familyFeature1.
|
||||||
///
|
///
|
||||||
/// In en, this message translates to:
|
/// In en, this message translates to:
|
||||||
/// **'✓ All from Pro'**
|
/// **'✓ Unlimited media file uploads'**
|
||||||
String get familyFeature1;
|
String get familyFeature1;
|
||||||
|
|
||||||
/// No description provided for @familyFeature2.
|
/// No description provided for @familyFeature2.
|
||||||
///
|
///
|
||||||
/// In en, this message translates to:
|
/// In en, this message translates to:
|
||||||
/// **'✓ 4 additional Plus users'**
|
/// **'✓ 4 additional Plus user'**
|
||||||
String get familyFeature2;
|
String get familyFeature2;
|
||||||
|
|
||||||
|
/// No description provided for @familyFeature3.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'✓ Restore flames'**
|
||||||
|
String get familyFeature3;
|
||||||
|
|
||||||
|
/// No description provided for @familyFeature4.
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'✓ Support twonly'**
|
||||||
|
String get familyFeature4;
|
||||||
|
|
||||||
/// No description provided for @redeemUserInviteCode.
|
/// No description provided for @redeemUserInviteCode.
|
||||||
///
|
///
|
||||||
/// In en, this message translates to:
|
/// In en, this message translates to:
|
||||||
|
|
|
||||||
|
|
@ -716,14 +716,20 @@ class AppLocalizationsDe extends AppLocalizations {
|
||||||
String get proFeature3 => '✓ Flammen wiederherstellen';
|
String get proFeature3 => '✓ Flammen wiederherstellen';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get proFeature4 => '✓ Cloud-Backup verschlüsselt (coming-soon)';
|
String get proFeature4 => '✓ twonly unterstützen';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get familyFeature1 => '✓ Alles von Pro';
|
String get familyFeature1 => '✓ Unbegrenzte Medien-Datei-Uploads';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get familyFeature2 => '✓ 4 zusätzliche Plus Benutzer';
|
String get familyFeature2 => '✓ 4 zusätzliche Plus Benutzer';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get familyFeature3 => '✓ Flammen wiederherstellen';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get familyFeature4 => '✓ twonly unterstützen';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get redeemUserInviteCode => 'Oder löse einen twonly-Code ein.';
|
String get redeemUserInviteCode => 'Oder löse einen twonly-Code ein.';
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -707,16 +707,22 @@ class AppLocalizationsEn extends AppLocalizations {
|
||||||
String get proFeature2 => '✓ 1 additional Plus user';
|
String get proFeature2 => '✓ 1 additional Plus user';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get proFeature3 => '✓ Cloud-Backup encrypted (coming-soon)';
|
String get proFeature3 => '✓ Restore flames';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get proFeature4 => 'Additional features (coming-soon)';
|
String get proFeature4 => '✓ Support twonly';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get familyFeature1 => '✓ All from Pro';
|
String get familyFeature1 => '✓ Unlimited media file uploads';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get familyFeature2 => '✓ 4 additional Plus users';
|
String get familyFeature2 => '✓ 4 additional Plus user';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get familyFeature3 => '✓ Restore flames';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get familyFeature4 => '✓ Support twonly';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get redeemUserInviteCode => 'Or redeem a twonly-Code.';
|
String get redeemUserInviteCode => 'Or redeem a twonly-Code.';
|
||||||
|
|
|
||||||
|
|
@ -159,7 +159,7 @@ class _UserListItem extends State<GroupListItem> {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> onTap() async {
|
Future<void> onTap() async {
|
||||||
if (_currentMessage == null) {
|
if (_currentMessage == null && widget.group.totalMediaCounter == 0) {
|
||||||
await Navigator.push(
|
await Navigator.push(
|
||||||
context,
|
context,
|
||||||
MaterialPageRoute(
|
MaterialPageRoute(
|
||||||
|
|
|
||||||
|
|
@ -113,6 +113,7 @@ class _MessageInputState extends State<MessageInput> {
|
||||||
}
|
}
|
||||||
setState(() {
|
setState(() {
|
||||||
_recordingState = RecordingState.recording;
|
_recordingState = RecordingState.recording;
|
||||||
|
_currentDuration = 0;
|
||||||
});
|
});
|
||||||
await HapticFeedback.heavyImpact();
|
await HapticFeedback.heavyImpact();
|
||||||
final audioTmpPath =
|
final audioTmpPath =
|
||||||
|
|
@ -220,82 +221,96 @@ class _MessageInputState extends State<MessageInput> {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: (_recordingState == RecordingState.recording)
|
child: Stack(
|
||||||
? Row(
|
children: [
|
||||||
children: [
|
TextField(
|
||||||
const Padding(
|
controller: _textFieldController,
|
||||||
padding: EdgeInsets.only(
|
focusNode: widget.textFieldFocus,
|
||||||
top: 14,
|
keyboardType: TextInputType.multiline,
|
||||||
bottom: 14,
|
showCursor:
|
||||||
left: 12,
|
_recordingState != RecordingState.recording,
|
||||||
right: 8,
|
maxLines: 4,
|
||||||
),
|
minLines: 1,
|
||||||
child: FaIcon(
|
onChanged: (value) async {
|
||||||
FontAwesomeIcons.microphone,
|
setState(() {});
|
||||||
size: 20,
|
await twonlyDB.groupsDao.updateGroup(
|
||||||
color: Colors.red,
|
widget.group.groupId,
|
||||||
),
|
GroupsCompanion(
|
||||||
|
draftMessage:
|
||||||
|
Value(_textFieldController.text),
|
||||||
),
|
),
|
||||||
const SizedBox(width: 10),
|
);
|
||||||
Text(
|
},
|
||||||
formatMsToMinSec(
|
onSubmitted: (_) {
|
||||||
_currentDuration,
|
_sendMessage();
|
||||||
),
|
},
|
||||||
style: const TextStyle(
|
style: const TextStyle(fontSize: 17),
|
||||||
color: Colors.white,
|
decoration: InputDecoration(
|
||||||
fontSize: 12,
|
hintText: context.lang.chatListDetailInput,
|
||||||
),
|
contentPadding: EdgeInsets.zero,
|
||||||
),
|
border: InputBorder.none,
|
||||||
if (!_audioRecordingLock) ...[
|
),
|
||||||
SizedBox(
|
),
|
||||||
width: (100 - _cancelSlideOffset) % 101,
|
if (_recordingState == RecordingState.recording)
|
||||||
),
|
Container(
|
||||||
Text(
|
decoration: BoxDecoration(
|
||||||
context.lang.voiceMessageSlideToCancel,
|
color: context.color.surfaceContainer,
|
||||||
),
|
borderRadius: BorderRadius.circular(20),
|
||||||
] else ...[
|
),
|
||||||
Expanded(
|
child: Row(
|
||||||
child: Container(),
|
children: [
|
||||||
),
|
const Padding(
|
||||||
GestureDetector(
|
padding: EdgeInsets.only(
|
||||||
onTap: _cancelAudioRecording,
|
top: 14,
|
||||||
child: Text(
|
bottom: 14,
|
||||||
context.lang.voiceMessageCancel,
|
left: 12,
|
||||||
style: const TextStyle(
|
right: 8,
|
||||||
color: Colors.red,
|
),
|
||||||
),
|
child: FaIcon(
|
||||||
|
FontAwesomeIcons.microphone,
|
||||||
|
size: 20,
|
||||||
|
color: Colors.red,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(width: 20),
|
const SizedBox(width: 10),
|
||||||
],
|
Text(
|
||||||
],
|
formatMsToMinSec(
|
||||||
)
|
_currentDuration,
|
||||||
: TextField(
|
),
|
||||||
controller: _textFieldController,
|
style: TextStyle(
|
||||||
focusNode: widget.textFieldFocus,
|
color: isDarkMode(context)
|
||||||
keyboardType: TextInputType.multiline,
|
? Colors.white
|
||||||
maxLines: 4,
|
: Colors.black,
|
||||||
minLines: 1,
|
fontSize: 12,
|
||||||
onChanged: (value) async {
|
),
|
||||||
setState(() {});
|
|
||||||
await twonlyDB.groupsDao.updateGroup(
|
|
||||||
widget.group.groupId,
|
|
||||||
GroupsCompanion(
|
|
||||||
draftMessage:
|
|
||||||
Value(_textFieldController.text),
|
|
||||||
),
|
),
|
||||||
);
|
if (!_audioRecordingLock) ...[
|
||||||
},
|
SizedBox(
|
||||||
onSubmitted: (_) {
|
width: (100 - _cancelSlideOffset) % 101,
|
||||||
_sendMessage();
|
),
|
||||||
},
|
Text(
|
||||||
style: const TextStyle(fontSize: 17),
|
context.lang.voiceMessageSlideToCancel,
|
||||||
decoration: InputDecoration(
|
),
|
||||||
hintText: context.lang.chatListDetailInput,
|
] else ...[
|
||||||
contentPadding: EdgeInsets.zero,
|
Expanded(
|
||||||
border: InputBorder.none,
|
child: Container(),
|
||||||
|
),
|
||||||
|
GestureDetector(
|
||||||
|
onTap: _cancelAudioRecording,
|
||||||
|
child: Text(
|
||||||
|
context.lang.voiceMessageCancel,
|
||||||
|
style: const TextStyle(
|
||||||
|
color: Colors.red,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(width: 20),
|
||||||
|
],
|
||||||
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
if (_textFieldController.text == '')
|
if (_textFieldController.text == '')
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
|
|
@ -355,7 +370,9 @@ class _MessageInputState extends State<MessageInput> {
|
||||||
height: 60,
|
height: 60,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius: BorderRadius.circular(90),
|
borderRadius: BorderRadius.circular(90),
|
||||||
color: Colors.black,
|
color: isDarkMode(context)
|
||||||
|
? Colors.black
|
||||||
|
: Colors.white,
|
||||||
),
|
),
|
||||||
child: const Center(
|
child: const Center(
|
||||||
child: Column(
|
child: Column(
|
||||||
|
|
|
||||||
|
|
@ -227,14 +227,15 @@ class _PlanCardState extends State<PlanCard> {
|
||||||
context.lang.proFeature1,
|
context.lang.proFeature1,
|
||||||
context.lang.proFeature2,
|
context.lang.proFeature2,
|
||||||
context.lang.proFeature3,
|
context.lang.proFeature3,
|
||||||
|
context.lang.proFeature4,
|
||||||
// context.lang.proFeature4,
|
// context.lang.proFeature4,
|
||||||
];
|
];
|
||||||
case 'Family':
|
case 'Family':
|
||||||
features = [
|
features = [
|
||||||
context.lang.proFeature1,
|
context.lang.familyFeature1,
|
||||||
context.lang.familyFeature2,
|
context.lang.familyFeature2,
|
||||||
context.lang.proFeature3,
|
context.lang.familyFeature3,
|
||||||
// context.lang.proFeature4,
|
context.lang.familyFeature4,
|
||||||
];
|
];
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ description: "twonly, a privacy-friendly way to connect with friends through sec
|
||||||
|
|
||||||
publish_to: 'none'
|
publish_to: 'none'
|
||||||
|
|
||||||
version: 0.0.77+77
|
version: 0.0.78+78
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ^3.6.0
|
sdk: ^3.6.0
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue