fluffychat merge
This commit is contained in:
commit
3288fd6f2d
20 changed files with 345 additions and 102 deletions
2
.github/workflows/release.yaml
vendored
2
.github/workflows/release.yaml
vendored
|
|
@ -103,7 +103,7 @@ jobs:
|
|||
- run: cat .github/workflows/versions.env >> $GITHUB_ENV
|
||||
- uses: subosito/flutter-action@v2
|
||||
with:
|
||||
flutter-version: ${{ env.FLUTTER_VERSION }}
|
||||
flutter-version: 3.19.6 # Workaround for not working on 3.22
|
||||
cache: true
|
||||
- name: Install dependencies
|
||||
run: sudo apt-get update && sudo apt-get install curl clang cmake ninja-build pkg-config libgtk-3-dev libblkid-dev liblzma-dev libjsoncpp-dev cmake-data libsecret-1-dev libsecret-1-0 librhash0 libssl-dev -y
|
||||
|
|
|
|||
41
CHANGELOG.md
41
CHANGELOG.md
|
|
@ -1,3 +1,44 @@
|
|||
## v1.21.0
|
||||
FluffyChat v1.21.0 introduces the new search feature which also includes a gallery and files list for each chat. Several performance improvements have been added under the hood, leading to a much nicer user experience.
|
||||
|
||||
- feat: Enable download images on iOS, not only share images (krille-chan)
|
||||
- feat: Search feature (krille-chan)
|
||||
- build: Update record package (krille-chan)
|
||||
- build: Use correct pubspec.yaml format for hosted dependency (krille-chan)
|
||||
- build: Use matrix sdk main branch (krille-chan)
|
||||
- chore: Change default timeout to 30 min (krille-chan)
|
||||
- chore: Go back to pub.dev matrix sdk (Krille)
|
||||
- chore: Hotfix create missing objectbox (Krille)
|
||||
- chore: Increase default network request timeout (Krille)
|
||||
- chore: Make bottomnavbar labels always visible (krille-chan)
|
||||
- chore: Nicer message animation (krille-chan)
|
||||
- chore: Only load last event sender if necessary (Krille)
|
||||
- chore: Set a maxsize for textfields (Krille)
|
||||
- chore: upgrade flutter to 3.22.0 (lauren n. liberda)
|
||||
- chore: upgrade flutter to 3.22.1 (lauren n. liberda)
|
||||
- ci: run `flutter gen-l10n` on code_tests (lauren n. liberda)
|
||||
- design: Improve design of Voice Messages and add 1.25 as speed (Krille)
|
||||
- fastlane: i18n ru (Yurt Page)
|
||||
- fastlane: improve full_description.txt (Yurt Page)
|
||||
- fix: Broken localization with empty strings in it (krille-chan)
|
||||
- fix: FakeMatrixApi check (krille-chan)
|
||||
- fix: mxc reactions not rendered correctly (krille-chan)
|
||||
- fix: Stickers from gboard have black background (Krille)
|
||||
- fix: voip code breaking from 0.28 (td)
|
||||
- refactor: Delete database file on failed app start (krille-chan)
|
||||
- refactor: Display better command hints (Krille)
|
||||
- refactor: Improve performance of chat list (krille-chan)
|
||||
- refactor: Precache theme and directchatmatrixid to improve performance in chat list item (krille-chan)
|
||||
- refactor: Update to Matrix Dart SDK 0.29.9 (Krille)
|
||||
- Translated using Weblate (Croatian) (Milo Ivir)
|
||||
- Translated using Weblate (Czech) (Jozef Mlich)
|
||||
- Translated using Weblate (Georgian) (Nicholas Winterhalter)
|
||||
- Translated using Weblate (German) (Gian Klug)
|
||||
- Translated using Weblate (Korean) (kdh8219)
|
||||
- Translated using Weblate (Latvian) (Edgars Andersons)
|
||||
- Translated using Weblate (Norwegian Bokmål) (sunniva)
|
||||
- Translated using Weblate (Turkish) (Oğuz Ersen)
|
||||
|
||||
## v1.20.0
|
||||
Design improvements and new advanced UI to manage rooms.
|
||||
|
||||
|
|
|
|||
|
|
@ -4030,5 +4030,7 @@
|
|||
"@thereAreCountUsersBlocked": {
|
||||
"type": "text",
|
||||
"count": {}
|
||||
}
|
||||
},
|
||||
"restricted": "Restricted",
|
||||
"knockRestricted": "Knock restricted"
|
||||
}
|
||||
3
devtools_options.yaml
Normal file
3
devtools_options.yaml
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
description: This file stores settings for Dart & Flutter DevTools.
|
||||
documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
|
||||
extensions:
|
||||
|
|
@ -197,6 +197,7 @@
|
|||
9705A1C41CF9048500538489 /* Embed Frameworks */,
|
||||
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
|
||||
F9C8EE392B9AB471149C306E /* [CP] Embed Pods Frameworks */,
|
||||
064CBD7CE0D4CD6850C6880A /* [CP] Copy Pods Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
|
|
@ -288,6 +289,23 @@
|
|||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
064CBD7CE0D4CD6850C6880A /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputFileListPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
alwaysOutOfDate = 1;
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ class ChatPage extends StatelessWidget {
|
|||
}
|
||||
|
||||
return ChatPageWithRoom(
|
||||
key: Key('chat_page_$roomId'),
|
||||
key: Key('chat_page_${roomId}_$eventId'),
|
||||
room: room,
|
||||
shareText: shareText,
|
||||
eventId: eventId,
|
||||
|
|
@ -360,16 +360,19 @@ class ChatController extends State<ChatPageWithRoom>
|
|||
}
|
||||
|
||||
void _tryLoadTimeline() async {
|
||||
readMarkerEventId = widget.eventId;
|
||||
loadTimelineFuture = _getTimeline(eventContextId: readMarkerEventId);
|
||||
final initialEventId = widget.eventId;
|
||||
loadTimelineFuture = _getTimeline();
|
||||
try {
|
||||
await loadTimelineFuture;
|
||||
if (initialEventId != null) scrollToEventId(initialEventId);
|
||||
|
||||
final fullyRead = room.fullyRead;
|
||||
if (fullyRead.isEmpty) {
|
||||
setReadMarker();
|
||||
return;
|
||||
}
|
||||
if (timeline!.events.any((event) => event.eventId == fullyRead)) {
|
||||
if (timeline?.events.any((event) => event.eventId == fullyRead) ??
|
||||
false) {
|
||||
Logs().v('Scroll up to visible event', fullyRead);
|
||||
setReadMarker();
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -107,7 +107,8 @@ class Message extends StatelessWidget {
|
|||
final client = Matrix.of(context).client;
|
||||
final ownMessage = event.senderId == client.userID;
|
||||
final alignment = ownMessage ? Alignment.topRight : Alignment.topLeft;
|
||||
var color = Theme.of(context).colorScheme.surfaceContainerHighest;
|
||||
// ignore: deprecated_member_use
|
||||
var color = Theme.of(context).colorScheme.surfaceVariant;
|
||||
final displayTime = event.type == EventTypes.RoomCreate ||
|
||||
nextEvent == null ||
|
||||
!event.originServerTs.sameEnvironment(nextEvent!.originServerTs);
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ class TypingIndicators extends StatelessWidget {
|
|||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
const avatarSize = Avatar.defaultSize / 2;
|
||||
|
||||
return StreamBuilder<Object>(
|
||||
stream: controller.room.client.onSync.stream.where(
|
||||
(syncUpdate) =>
|
||||
|
|
@ -24,7 +26,7 @@ class TypingIndicators extends StatelessWidget {
|
|||
builder: (context, _) {
|
||||
final typingUsers = controller.room.typingUsers
|
||||
..removeWhere((u) => u.stateKey == Matrix.of(context).client.userID);
|
||||
const topPadding = 20.0;
|
||||
|
||||
const bottomPadding = 4.0;
|
||||
return Container(
|
||||
width: double.infinity,
|
||||
|
|
@ -32,8 +34,7 @@ class TypingIndicators extends StatelessWidget {
|
|||
child: AnimatedContainer(
|
||||
constraints:
|
||||
const BoxConstraints(maxWidth: FluffyThemes.columnWidth * 2.5),
|
||||
height:
|
||||
typingUsers.isEmpty ? 0 : Avatar.defaultSize + bottomPadding,
|
||||
height: typingUsers.isEmpty ? 0 : avatarSize + bottomPadding,
|
||||
duration: FluffyThemes.animationDuration,
|
||||
curve: FluffyThemes.animationCurve,
|
||||
alignment: controller.timeline!.events.isNotEmpty &&
|
||||
|
|
@ -50,14 +51,13 @@ class TypingIndicators extends StatelessWidget {
|
|||
child: Row(
|
||||
children: [
|
||||
SizedBox(
|
||||
height: Avatar.defaultSize,
|
||||
width: typingUsers.length < 2
|
||||
? Avatar.defaultSize
|
||||
: Avatar.defaultSize + 16,
|
||||
height: avatarSize,
|
||||
width: typingUsers.length < 2 ? avatarSize : avatarSize + 16,
|
||||
child: Stack(
|
||||
children: [
|
||||
if (typingUsers.isNotEmpty)
|
||||
Avatar(
|
||||
size: avatarSize,
|
||||
mxContent: typingUsers.first.avatarUrl,
|
||||
name: typingUsers.first.calcDisplayname(),
|
||||
),
|
||||
|
|
@ -65,6 +65,7 @@ class TypingIndicators extends StatelessWidget {
|
|||
Padding(
|
||||
padding: const EdgeInsets.only(left: 16),
|
||||
child: Avatar(
|
||||
size: avatarSize,
|
||||
mxContent: typingUsers.length == 2
|
||||
? typingUsers.last.avatarUrl
|
||||
: null,
|
||||
|
|
@ -77,21 +78,16 @@ class TypingIndicators extends StatelessWidget {
|
|||
),
|
||||
),
|
||||
const SizedBox(width: 8),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(top: topPadding),
|
||||
child: Material(
|
||||
color:
|
||||
Theme.of(context).colorScheme.surfaceContainerHighest,
|
||||
borderRadius: const BorderRadius.only(
|
||||
topLeft: Radius.circular(2),
|
||||
topRight: Radius.circular(AppConfig.borderRadius),
|
||||
bottomLeft: Radius.circular(AppConfig.borderRadius),
|
||||
bottomRight: Radius.circular(AppConfig.borderRadius),
|
||||
),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 8),
|
||||
child: typingUsers.isEmpty ? null : const _TypingDots(),
|
||||
),
|
||||
Material(
|
||||
color:
|
||||
// ignore: deprecated_member_use
|
||||
Theme.of(context).colorScheme.surfaceVariant,
|
||||
borderRadius: const BorderRadius.all(
|
||||
Radius.circular(AppConfig.borderRadius),
|
||||
),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 8),
|
||||
child: typingUsers.isEmpty ? null : const _TypingDots(),
|
||||
),
|
||||
),
|
||||
],
|
||||
|
|
|
|||
|
|
@ -266,6 +266,10 @@ extension JoinRulesDisplayString on JoinRules {
|
|||
return l10n.usersMustKnock;
|
||||
case JoinRules.private:
|
||||
return l10n.noOneCanJoin;
|
||||
case JoinRules.restricted:
|
||||
return l10n.restricted;
|
||||
case JoinRules.knockRestricted:
|
||||
return l10n.knockRestricted;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -94,6 +94,11 @@ class ChatListItem extends StatelessWidget {
|
|||
if (filter != null && !displayname.toLowerCase().contains(filter)) {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
|
||||
final needLastEventSender = lastEvent == null
|
||||
? false
|
||||
: room.getState(EventTypes.RoomMember, lastEvent.senderId) == null;
|
||||
|
||||
return Padding(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
horizontal: 8,
|
||||
|
|
|
|||
|
|
@ -70,6 +70,16 @@ class ChatSearchController extends State<ChatSearchPage>
|
|||
result.$2,
|
||||
),
|
||||
)
|
||||
// Deduplication workaround for
|
||||
// https://github.com/famedly/matrix-dart-sdk/issues/1831
|
||||
.map(
|
||||
(result) => (
|
||||
<String, Event>{
|
||||
for (final event in result.$1) event.eventId: event,
|
||||
}.values.toList(),
|
||||
result.$2,
|
||||
),
|
||||
)
|
||||
.asBroadcastStream();
|
||||
});
|
||||
}
|
||||
|
|
@ -100,6 +110,16 @@ class ChatSearchController extends State<ChatSearchPage>
|
|||
result.$2,
|
||||
),
|
||||
)
|
||||
// Deduplication workaround for
|
||||
// https://github.com/famedly/matrix-dart-sdk/issues/1831
|
||||
.map(
|
||||
(result) => (
|
||||
<String, Event>{
|
||||
for (final event in result.$1) event.eventId: event,
|
||||
}.values.toList(),
|
||||
result.$2,
|
||||
),
|
||||
)
|
||||
.asBroadcastStream();
|
||||
});
|
||||
}
|
||||
|
|
@ -130,6 +150,16 @@ class ChatSearchController extends State<ChatSearchPage>
|
|||
result.$2,
|
||||
),
|
||||
)
|
||||
// Deduplication workaround for
|
||||
// https://github.com/famedly/matrix-dart-sdk/issues/1831
|
||||
.map(
|
||||
(result) => (
|
||||
<String, Event>{
|
||||
for (final event in result.$1) event.eventId: event,
|
||||
}.values.toList(),
|
||||
result.$2,
|
||||
),
|
||||
)
|
||||
.asBroadcastStream();
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -92,7 +92,8 @@ class HomeserverAppBar extends StatelessWidget {
|
|||
: null,
|
||||
fillColor: FluffyThemes.isColumnMode(context)
|
||||
? Theme.of(context).colorScheme.surface
|
||||
: Theme.of(context).colorScheme.surfaceContainerHighest,
|
||||
// ignore: deprecated_member_use
|
||||
: Theme.of(context).colorScheme.surfaceVariant,
|
||||
prefixText: '${L10n.of(context)!.homeserver}: ',
|
||||
hintText: L10n.of(context)!.enterYourHomeserver,
|
||||
suffixIcon: const Icon(Icons.search),
|
||||
|
|
|
|||
|
|
@ -61,8 +61,14 @@ class SettingsIgnoreListView extends StatelessWidget {
|
|||
),
|
||||
Expanded(
|
||||
child: StreamBuilder<Object>(
|
||||
stream: client.onAccountData.stream
|
||||
.where((a) => a.type == 'm.ignored_user_list'),
|
||||
stream: client.onSync.stream.where(
|
||||
(syncUpdate) =>
|
||||
syncUpdate.accountData?.any(
|
||||
(accountData) =>
|
||||
accountData.type == 'm.ignored_user_list',
|
||||
) ??
|
||||
false,
|
||||
),
|
||||
builder: (context, snapshot) {
|
||||
return ListView.builder(
|
||||
itemCount: client.ignoredUsers.length,
|
||||
|
|
|
|||
|
|
@ -22,11 +22,13 @@ class SettingsNotificationsView extends StatelessWidget {
|
|||
),
|
||||
body: MaxWidthBody(
|
||||
child: StreamBuilder(
|
||||
stream: Matrix.of(context)
|
||||
.client
|
||||
.onAccountData
|
||||
.stream
|
||||
.where((event) => event.type == 'm.push_rules'),
|
||||
stream: Matrix.of(context).client.onSync.stream.where(
|
||||
(syncUpdate) =>
|
||||
syncUpdate.accountData?.any(
|
||||
(accountData) => accountData.type == 'm.push_rules',
|
||||
) ??
|
||||
false,
|
||||
),
|
||||
builder: (BuildContext context, _) {
|
||||
return Column(
|
||||
children: [
|
||||
|
|
|
|||
|
|
@ -205,10 +205,14 @@ class SettingsStyleView extends StatelessWidget {
|
|||
),
|
||||
),
|
||||
StreamBuilder(
|
||||
stream: client.onAccountData.stream.where(
|
||||
(data) =>
|
||||
data.type ==
|
||||
ApplicationAccountConfigExtension.accountDataKey,
|
||||
stream: client.onSync.stream.where(
|
||||
(syncUpdate) =>
|
||||
syncUpdate.accountData?.any(
|
||||
(accountData) =>
|
||||
accountData.type ==
|
||||
ApplicationAccountConfigExtension.accountDataKey,
|
||||
) ??
|
||||
false,
|
||||
),
|
||||
builder: (context, snapshot) {
|
||||
final accountConfig = client.applicationAccountConfig;
|
||||
|
|
|
|||
|
|
@ -119,7 +119,8 @@ class UserBottomSheetView extends StatelessWidget {
|
|||
padding: const EdgeInsets.all(12.0),
|
||||
child: Material(
|
||||
color:
|
||||
Theme.of(context).colorScheme.surfaceContainerHighest,
|
||||
// ignore: deprecated_member_use
|
||||
Theme.of(context).colorScheme.surfaceVariant,
|
||||
borderRadius:
|
||||
BorderRadius.circular(AppConfig.borderRadius),
|
||||
child: ListTile(
|
||||
|
|
|
|||
|
|
@ -860,7 +860,9 @@
|
|||
"capacitySetTooLow",
|
||||
"roomCapacityExplanation",
|
||||
"enterNumber",
|
||||
"buildTranslation"
|
||||
"buildTranslation",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"be": [
|
||||
|
|
@ -2351,7 +2353,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"bn": [
|
||||
|
|
@ -3838,7 +3842,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"bo": [
|
||||
|
|
@ -5329,7 +5335,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"ca": [
|
||||
|
|
@ -6222,7 +6230,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"cs": [
|
||||
|
|
@ -7197,7 +7207,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"de": [
|
||||
|
|
@ -8061,7 +8073,9 @@
|
|||
"capacitySetTooLow",
|
||||
"roomCapacityExplanation",
|
||||
"enterNumber",
|
||||
"buildTranslation"
|
||||
"buildTranslation",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"el": [
|
||||
|
|
@ -9503,7 +9517,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"eo": [
|
||||
|
|
@ -10643,7 +10659,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"es": [
|
||||
|
|
@ -10678,7 +10696,9 @@
|
|||
"files",
|
||||
"addSpaceToSpaceDescription",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"et": [
|
||||
|
|
@ -11542,7 +11562,9 @@
|
|||
"capacitySetTooLow",
|
||||
"roomCapacityExplanation",
|
||||
"enterNumber",
|
||||
"buildTranslation"
|
||||
"buildTranslation",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"eu": [
|
||||
|
|
@ -12406,7 +12428,9 @@
|
|||
"capacitySetTooLow",
|
||||
"roomCapacityExplanation",
|
||||
"enterNumber",
|
||||
"buildTranslation"
|
||||
"buildTranslation",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"fa": [
|
||||
|
|
@ -13403,7 +13427,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"fi": [
|
||||
|
|
@ -14364,7 +14390,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"fil": [
|
||||
|
|
@ -15681,7 +15709,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"fr": [
|
||||
|
|
@ -16677,7 +16707,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"ga": [
|
||||
|
|
@ -17802,7 +17834,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"gl": [
|
||||
|
|
@ -18666,7 +18700,9 @@
|
|||
"capacitySetTooLow",
|
||||
"roomCapacityExplanation",
|
||||
"enterNumber",
|
||||
"buildTranslation"
|
||||
"buildTranslation",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"he": [
|
||||
|
|
@ -19910,7 +19946,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"hi": [
|
||||
|
|
@ -21394,7 +21432,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"hr": [
|
||||
|
|
@ -22331,7 +22371,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"hu": [
|
||||
|
|
@ -23205,7 +23247,9 @@
|
|||
"capacitySetTooLow",
|
||||
"roomCapacityExplanation",
|
||||
"enterNumber",
|
||||
"buildTranslation"
|
||||
"buildTranslation",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"ia": [
|
||||
|
|
@ -24682,7 +24726,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"id": [
|
||||
|
|
@ -25546,7 +25592,9 @@
|
|||
"capacitySetTooLow",
|
||||
"roomCapacityExplanation",
|
||||
"enterNumber",
|
||||
"buildTranslation"
|
||||
"buildTranslation",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"ie": [
|
||||
|
|
@ -26794,7 +26842,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"it": [
|
||||
|
|
@ -27709,7 +27759,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"ja": [
|
||||
|
|
@ -28735,7 +28787,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"ka": [
|
||||
|
|
@ -30080,7 +30134,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"ko": [
|
||||
|
|
@ -30944,7 +31000,9 @@
|
|||
"capacitySetTooLow",
|
||||
"roomCapacityExplanation",
|
||||
"enterNumber",
|
||||
"buildTranslation"
|
||||
"buildTranslation",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"lt": [
|
||||
|
|
@ -31970,7 +32028,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"lv": [
|
||||
|
|
@ -32836,7 +32896,9 @@
|
|||
"capacitySetTooLow",
|
||||
"roomCapacityExplanation",
|
||||
"enterNumber",
|
||||
"buildTranslation"
|
||||
"buildTranslation",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"nb": [
|
||||
|
|
@ -34026,7 +34088,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"nl": [
|
||||
|
|
@ -34980,7 +35044,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"pl": [
|
||||
|
|
@ -35943,7 +36009,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"pt": [
|
||||
|
|
@ -37412,7 +37480,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"pt_BR": [
|
||||
|
|
@ -38276,7 +38346,9 @@
|
|||
"capacitySetTooLow",
|
||||
"roomCapacityExplanation",
|
||||
"enterNumber",
|
||||
"buildTranslation"
|
||||
"buildTranslation",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"pt_PT": [
|
||||
|
|
@ -39467,7 +39539,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"ro": [
|
||||
|
|
@ -40465,7 +40539,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"ru": [
|
||||
|
|
@ -41329,7 +41405,9 @@
|
|||
"capacitySetTooLow",
|
||||
"roomCapacityExplanation",
|
||||
"enterNumber",
|
||||
"buildTranslation"
|
||||
"buildTranslation",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"sk": [
|
||||
|
|
@ -42586,7 +42664,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"sl": [
|
||||
|
|
@ -43973,7 +44053,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"sr": [
|
||||
|
|
@ -45134,7 +45216,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"sv": [
|
||||
|
|
@ -46029,7 +46113,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"ta": [
|
||||
|
|
@ -47517,7 +47603,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"th": [
|
||||
|
|
@ -48959,7 +49047,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"tr": [
|
||||
|
|
@ -49823,7 +49913,9 @@
|
|||
"capacitySetTooLow",
|
||||
"roomCapacityExplanation",
|
||||
"enterNumber",
|
||||
"buildTranslation"
|
||||
"buildTranslation",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"uk": [
|
||||
|
|
@ -50718,7 +50810,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"vi": [
|
||||
|
|
@ -52135,7 +52229,9 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"zh": [
|
||||
|
|
@ -52999,7 +53095,9 @@
|
|||
"capacitySetTooLow",
|
||||
"roomCapacityExplanation",
|
||||
"enterNumber",
|
||||
"buildTranslation"
|
||||
"buildTranslation",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
],
|
||||
|
||||
"zh_Hant": [
|
||||
|
|
@ -54138,6 +54236,8 @@
|
|||
"enterNumber",
|
||||
"buildTranslation",
|
||||
"noDatabaseEncryption",
|
||||
"thereAreCountUsersBlocked"
|
||||
"thereAreCountUsersBlocked",
|
||||
"restricted",
|
||||
"knockRestricted"
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1409,10 +1409,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: matrix
|
||||
sha256: b96f16ec227138a61d148f2812c4d558b2930edbb6cd05d03b3a41c4fffd2f47
|
||||
sha256: "668ed9b7279ac9c364c687585e606c1122f88d6e2e3410ba781a167b47cd9471"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.29.7"
|
||||
version: "0.29.9"
|
||||
meta:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ description: Learn a language while texting your friends.
|
|||
# Pangea#
|
||||
publish_to: none
|
||||
# On version bump also increase the build number for F-Droid
|
||||
version: 1.20.0+3532
|
||||
version: 1.21.0+3533
|
||||
|
||||
environment:
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
|
|
@ -70,7 +70,7 @@ dependencies:
|
|||
keyboard_shortcuts: ^0.1.4
|
||||
latlong2: ^0.9.1
|
||||
linkify: ^5.0.0
|
||||
matrix: ^0.29.7
|
||||
matrix: ^0.29.9
|
||||
native_imaging: ^0.1.1
|
||||
package_info_plus: ^6.0.0
|
||||
pasteboard: ^0.2.0
|
||||
|
|
@ -200,9 +200,8 @@ dependency_overrides:
|
|||
# Until https://github.com/mogol/flutter_secure_storage/issues/616 is fixed
|
||||
flutter_secure_storage_linux: 1.1.3
|
||||
geolocator_android:
|
||||
hosted:
|
||||
name: geolocator_android
|
||||
url: https://hanntech-gmbh.gitlab.io/free2pass/flutter-geolocator-floss
|
||||
hosted: https://hanntech-gmbh.gitlab.io/free2pass/flutter-geolocator-floss
|
||||
version: ^1.0.1
|
||||
# waiting for null safety
|
||||
# Upstream pull request: https://github.com/AntoineMarcel/keyboard_shortcuts/pull/13
|
||||
keyboard_shortcuts:
|
||||
|
|
|
|||
|
|
@ -64,13 +64,40 @@ parts:
|
|||
stage-snaps:
|
||||
- zenity-integration
|
||||
|
||||
flutter-git:
|
||||
source: https://github.com/flutter/flutter.git
|
||||
source-tag: 3.19.6
|
||||
source-depth: 1
|
||||
plugin: nil
|
||||
override-build: |
|
||||
mkdir -p $CRAFT_PART_INSTALL/usr/bin
|
||||
mkdir -p $CRAFT_PART_INSTALL/usr/libexec
|
||||
cp -r $CRAFT_PART_SRC $CRAFT_PART_INSTALL/usr/libexec/flutter
|
||||
ln -s $CRAFT_PART_INSTALL/usr/libexec/flutter/bin/flutter $CRAFT_PART_INSTALL/usr/bin/flutter
|
||||
ln -s $SNAPCRAFT_PART_INSTALL/usr/libexec/flutter/bin/dart $SNAPCRAFT_PART_INSTALL/usr/bin/dart
|
||||
$CRAFT_PART_INSTALL/usr/bin/flutter doctor
|
||||
build-packages:
|
||||
- clang
|
||||
- cmake
|
||||
- curl
|
||||
- libgtk-3-dev
|
||||
- ninja-build
|
||||
- unzip
|
||||
- xz-utils
|
||||
- zip
|
||||
override-prime: ''
|
||||
|
||||
fluffychat:
|
||||
plugin: flutter
|
||||
after: [flutter-git]
|
||||
plugin: nil
|
||||
source: .
|
||||
override-build: |
|
||||
# Workaround for Flutter build error:
|
||||
rm -rf build
|
||||
craftctl default
|
||||
|
||||
flutter build linux --release -v
|
||||
mkdir -p $CRAFT_PART_INSTALL/bin/
|
||||
cp -r build/linux/*/release/bundle/* $CRAFT_PART_INSTALL/bin/
|
||||
build-packages:
|
||||
- libjsoncpp-dev
|
||||
- curl
|
||||
|
|
@ -87,7 +114,7 @@ slots:
|
|||
|
||||
apps:
|
||||
fluffychat:
|
||||
command: fluffychat
|
||||
command: bin/fluffychat
|
||||
extensions: [ gnome ]
|
||||
plugs:
|
||||
- audio-playback
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue