├── .changes └── .gitkeep ├── .config └── nextest.toml ├── .gitattributes ├── .github ├── CONTRIBUTING.md ├── FUNDING.yml ├── cla │ └── CLA.md ├── nextest-config.toml ├── scripts │ └── flutter-integration-tests.sh ├── templates │ ├── failure-report-template.md.tmpl │ └── ios-manifest.plist.tmpl └── workflows │ ├── build-app.yml │ ├── build-changelog.yml │ ├── build-docs.yml │ ├── check-changelog.yml │ ├── check-docs.yml │ ├── check-flutter-integration-tests.yml │ ├── check-flutter-unittest.yml │ ├── check-native.yml │ ├── check-rust-integration-tests.yml │ ├── check-styles.yml │ ├── deploy-demo.yml │ ├── deploy-docs.yml │ ├── deploy-nightly.yml │ ├── deploy-release.yml │ └── update-translations.yml ├── .gitignore ├── .gitmodules ├── .vscode └── launch.json ├── CHANGELOG.md ├── Cargo.lock ├── Cargo.toml ├── LICENSE-AGPL.txt ├── LICENSE.txt ├── Makefile.toml ├── Readme.md ├── app ├── .env ├── .gitignore ├── .metadata ├── README.md ├── analysis_options.yaml ├── android │ ├── .gitignore │ ├── app │ │ ├── build.gradle │ │ ├── google-services.json │ │ ├── proguard-rules.pro │ │ └── src │ │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── drawable-hdpi │ │ │ │ └── logo_notification.png │ │ │ ├── ic_launcher-playstore.png │ │ │ ├── kotlin │ │ │ │ └── global │ │ │ │ │ └── acter │ │ │ │ │ └── app │ │ │ │ │ └── MainActivity.kt │ │ │ ├── logo_notification.png │ │ │ └── res │ │ │ │ ├── drawable-hdpi │ │ │ │ └── logo_notification.png │ │ │ │ ├── drawable-mdpi │ │ │ │ └── logo_notification.png │ │ │ │ ├── drawable-v21 │ │ │ │ └── launch_background.xml │ │ │ │ ├── drawable-xhdpi │ │ │ │ └── logo_notification.png │ │ │ │ ├── drawable-xxhdpi │ │ │ │ └── logo_notification.png │ │ │ │ ├── drawable-xxxhdpi │ │ │ │ └── logo_notification.png │ │ │ │ ├── drawable │ │ │ │ ├── app_icon.png │ │ │ │ └── launch_background.xml │ │ │ │ ├── mipmap-anydpi-v26 │ │ │ │ ├── ic_launcher.xml │ │ │ │ └── ic_launcher_round.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── ic_launcher_foreground.png │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── ic_launcher_foreground.png │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── ic_launcher_foreground.png │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── ic_launcher_foreground.png │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── ic_launcher_foreground.png │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── raw │ │ │ │ └── keep.xml │ │ │ │ ├── values-night │ │ │ │ └── styles.xml │ │ │ │ └── values │ │ │ │ ├── colors.xml │ │ │ │ ├── ic_launcher_background.xml │ │ │ │ └── styles.xml │ │ │ └── profile │ │ │ └── AndroidManifest.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ └── settings.gradle ├── assets │ ├── fonts │ │ ├── Inter.ttf │ │ ├── Noto-COLRv1.ttf │ │ ├── Roboto-Regular.ttf │ │ └── RobotoMono-Regular.ttf │ ├── icon │ │ ├── acter-logo.svg │ │ ├── acter.svg │ │ ├── ic_left_chat_bubble_corner.svg │ │ ├── ic_right_chat_bubble_corner.svg │ │ ├── logo.png │ │ ├── logo_foreground.png │ │ ├── logo_foreground.svg │ │ ├── signal_logo.png │ │ ├── tray_icon.ico │ │ ├── tray_icon.png │ │ └── tray_icon.svg │ ├── images │ │ ├── chat_bg.png │ │ ├── comms_onboard.png │ │ ├── deliveredIcon.svg │ │ ├── emptyPlaceholder.svg │ │ ├── empty_activity.svg │ │ ├── empty_chat.svg │ │ ├── empty_event.svg │ │ ├── empty_home.svg │ │ ├── empty_messages.svg │ │ ├── empty_pin.svg │ │ ├── empty_space.svg │ │ ├── empty_updates.svg │ │ ├── encryptionkey.png │ │ ├── forgot_password.svg │ │ ├── genericError.svg │ │ ├── intro.png │ │ ├── modularity_onboard.png │ │ ├── onboarding-collaboration.png │ │ ├── onboarding-train-station.png │ │ ├── onboarding-welcome.png │ │ ├── seenIcon.svg │ │ ├── sendIcon.svg │ │ ├── sentIcon.svg │ │ ├── spaces_onboard.png │ │ ├── tasks.svg │ │ ├── undraw_access_denied_re_awnf.svg │ │ ├── undraw_project_completed_re_jr7u.svg │ │ └── update_onboard.png │ └── videos │ │ └── .gitkeep ├── build.yaml ├── devtools_options.yaml ├── ios │ ├── .gitignore │ ├── ActerPushServiceExtension │ │ ├── ActerLogger.swift │ │ ├── ActerPushServiceExtension.entitlements │ │ ├── Constants.swift │ │ ├── Info.plist │ │ ├── NotificationService.swift │ │ ├── UNNotificationRequest.swift │ │ └── acter.swift │ ├── Flutter │ │ ├── AppFrameworkInfo.plist │ │ ├── Debug.xcconfig │ │ └── Release.xcconfig │ ├── Podfile │ ├── Podfile.lock │ ├── Runner.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ └── WorkspaceSettings.xcsettings │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── Runner.xcscheme │ ├── Runner.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── WorkspaceSettings.xcsettings │ ├── Runner │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ │ └── LaunchImage.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── LaunchImage.png │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ └── README.md │ │ ├── Base.lproj │ │ │ ├── LaunchScreen.storyboard │ │ │ └── Main.storyboard │ │ ├── Info.plist │ │ ├── Runner-Bridging-Header.h │ │ └── Runner.entitlements │ ├── acterFFI │ │ ├── acterFFI.h │ │ └── module.modulemap │ ├── exportOptions_nightly_adhoc.plist │ └── exportOptions_release.plist ├── l10n.yaml ├── lib │ ├── common │ │ ├── actions │ │ │ ├── add_space_object_ref.dart │ │ │ ├── close_room.dart │ │ │ ├── open_link.dart │ │ │ ├── redact_content.dart │ │ │ ├── report_content.dart │ │ │ ├── select_space.dart │ │ │ ├── show_limited_space_list.dart │ │ │ └── show_parent_space_list.dart │ │ ├── animations │ │ │ └── like_animation.dart │ │ ├── dialogs │ │ │ ├── bottom_sheet_container_widget.dart │ │ │ ├── deactivation_confirmation.dart │ │ │ ├── logout_confirmation.dart │ │ │ └── nuke_confirmation.dart │ │ ├── drag_handle_widget.dart │ │ ├── extensions │ │ │ ├── acter_build_context.dart │ │ │ ├── options.dart │ │ │ ├── record_helpers.dart │ │ │ └── ref_debounce.dart │ │ ├── models │ │ │ ├── attachment_media_state │ │ │ │ ├── attachment_media_state.dart │ │ │ │ └── attachment_media_state.freezed.dart │ │ │ ├── keys.dart │ │ │ ├── sync_state │ │ │ │ ├── sync_state.dart │ │ │ │ └── sync_state.freezed.dart │ │ │ └── types.dart │ │ ├── pages │ │ │ ├── fatal_fail.dart │ │ │ └── not_found.dart │ │ ├── providers │ │ │ ├── app_install_check_provider.dart │ │ │ ├── app_state_provider.dart │ │ │ ├── chat_providers.dart │ │ │ ├── common_providers.dart │ │ │ ├── keyboard_visbility_provider.dart │ │ │ ├── network_provider.dart │ │ │ ├── notifiers │ │ │ │ ├── chat_notifiers.dart │ │ │ │ ├── client_pref_notifier.dart │ │ │ │ ├── reactions_notifiers.dart │ │ │ │ ├── room_notifiers.dart │ │ │ │ ├── space_notifiers.dart │ │ │ │ └── sync_notifier.dart │ │ │ ├── reactions_providers.dart │ │ │ ├── room_providers.dart │ │ │ ├── sdk_provider.dart │ │ │ └── space_providers.dart │ │ ├── skeletons │ │ │ └── general_list_skeleton_widget.dart │ │ ├── themes │ │ │ ├── acter_theme.dart │ │ │ ├── app_theme.dart │ │ │ ├── chat_theme.dart │ │ │ ├── colors │ │ │ │ └── color_scheme.dart │ │ │ └── components │ │ │ │ ├── bottom_sheet_theme.dart │ │ │ │ ├── button_theme.dart │ │ │ │ ├── card_theme.dart │ │ │ │ ├── dialog_theme.dart │ │ │ │ ├── divider_theme.dart │ │ │ │ ├── input_decoration_theme.dart │ │ │ │ ├── list_tile_Theme.dart │ │ │ │ ├── navigationbar_theme.dart │ │ │ │ ├── progress_indicator_theme.dart │ │ │ │ └── text_theme.dart │ │ ├── toolkit │ │ │ ├── buttons │ │ │ │ ├── danger_action_button.dart │ │ │ │ ├── inline_text_button.dart │ │ │ │ ├── primary_action_button.dart │ │ │ │ └── user_chip.dart │ │ │ ├── errors │ │ │ │ ├── error_dialog.dart │ │ │ │ ├── error_page.dart │ │ │ │ ├── inline_error_button.dart │ │ │ │ └── util.dart │ │ │ ├── html │ │ │ │ ├── render_html.dart │ │ │ │ └── render_html_ng.dart │ │ │ ├── html_editor │ │ │ │ ├── html_editor.dart │ │ │ │ ├── mentions │ │ │ │ │ ├── commands │ │ │ │ │ │ └── backspace_for_mentions.dart │ │ │ │ │ ├── components │ │ │ │ │ │ ├── mention_item.dart │ │ │ │ │ │ ├── mention_list.dart │ │ │ │ │ │ └── mention_menu.dart │ │ │ │ │ ├── mention_detection.dart │ │ │ │ │ ├── mention_shortcuts.dart │ │ │ │ │ └── models │ │ │ │ │ │ ├── mention_attributes.dart │ │ │ │ │ │ └── mention_type.dart │ │ │ │ └── services │ │ │ │ │ └── constants.dart │ │ │ ├── menu_item_widget.dart │ │ │ ├── skeletons │ │ │ │ └── room_card_skeleton.dart │ │ │ └── widgets │ │ │ │ ├── acter_inline_chip.dart │ │ │ │ ├── acter_selection_area.dart │ │ │ │ ├── animated_chats_list_widget.dart │ │ │ │ └── pulsating_icon.dart │ │ ├── tutorial_dialogs │ │ │ ├── bottom_navigation_tutorials │ │ │ │ └── bottom_navigation_tutorials.dart │ │ │ ├── show_tutorials.dart │ │ │ ├── space_overview_tutorials │ │ │ │ ├── create_or_join_space_tutorials.dart │ │ │ │ └── space_overview_tutorials.dart │ │ │ └── target_focus.dart │ │ ├── utils │ │ │ ├── device.dart │ │ │ ├── logging.dart │ │ │ ├── utils.dart │ │ │ └── validation_utils.dart │ │ └── widgets │ │ │ ├── acter_icon_picker │ │ │ ├── acter_icon_widget.dart │ │ │ ├── model │ │ │ │ ├── acter_icons.dart │ │ │ │ └── color_data.dart │ │ │ ├── picker │ │ │ │ └── acter_icon_picker.dart │ │ │ └── utils.dart │ │ │ ├── acter_search_widget.dart │ │ │ ├── acter_video_player.dart │ │ │ ├── action_button_widget.dart │ │ │ ├── add_button_with_can_permission.dart │ │ │ ├── avatar │ │ │ └── full_screen_avatar_page.dart │ │ │ ├── blinking_text.dart │ │ │ ├── centered_page.dart │ │ │ ├── chat │ │ │ ├── chat_selector_drawer.dart │ │ │ └── edit_room_description_sheet.dart │ │ │ ├── checkbox_form_field.dart │ │ │ ├── default_dialog.dart │ │ │ ├── default_page_header.dart │ │ │ ├── dialog_page.dart │ │ │ ├── dotted_border_widget.dart │ │ │ ├── edit_html_description_sheet.dart │ │ │ ├── edit_plain_description_sheet.dart │ │ │ ├── edit_title_sheet.dart │ │ │ ├── emoji_picker_widget.dart │ │ │ ├── empty_state_widget.dart │ │ │ ├── event │ │ │ └── event_selector_drawer.dart │ │ │ ├── frost_effect.dart │ │ │ ├── icons │ │ │ └── tasks_icon.dart │ │ │ ├── image_dialog.dart │ │ │ ├── info_widget.dart │ │ │ ├── input_text_field.dart │ │ │ ├── like_button.dart │ │ │ ├── message_content_widget.dart │ │ │ ├── no_internet.dart │ │ │ ├── pin │ │ │ └── pin_selector_drawer.dart │ │ │ ├── plus_icon_widget.dart │ │ │ ├── room │ │ │ ├── brief_room_list_entry.dart │ │ │ ├── room_avatar_builder.dart │ │ │ ├── room_card.dart │ │ │ ├── room_hierarchy_card.dart │ │ │ ├── room_hierarchy_join_button.dart │ │ │ ├── room_hierarchy_options_menu.dart │ │ │ ├── room_profile_header.dart │ │ │ ├── room_with_profile_card.dart │ │ │ └── select_room_drawer.dart │ │ │ ├── scrollable_list_tab_scroller.dart │ │ │ ├── search.dart │ │ │ ├── side_sheet_page.dart │ │ │ ├── sliver_scaffold.dart │ │ │ ├── space_name_widget.dart │ │ │ ├── spaces │ │ │ ├── has_space_permission.dart │ │ │ ├── select_space_form_field.dart │ │ │ └── space_selector_drawer.dart │ │ │ ├── super_invite │ │ │ └── superInvite_selector_drawer.dart │ │ │ ├── task │ │ │ └── taskList_selector_drawer.dart │ │ │ ├── typing_indicator.dart │ │ │ ├── user_avatar.dart │ │ │ ├── video_dialog.dart │ │ │ ├── visibility │ │ │ └── shadow_effect_widget.dart │ │ │ └── with_sidebar.dart │ ├── config │ │ ├── constants.dart │ │ ├── desktop.dart │ │ ├── notifications │ │ │ ├── firebase_options.dart │ │ │ ├── init.dart │ │ │ └── util.dart │ │ └── setup.dart │ ├── features │ │ ├── activities │ │ │ ├── actions │ │ │ │ ├── destroy_enc_key_action.dart │ │ │ │ └── key_storage_urgency_action.dart │ │ │ ├── pages │ │ │ │ └── activities_page.dart │ │ │ ├── providers │ │ │ │ ├── activities_providers.dart │ │ │ │ ├── key_storage_urgency_provider.dart │ │ │ │ └── notifiers │ │ │ │ │ └── activities_notifiers.dart │ │ │ └── widgets │ │ │ │ ├── activity_section_item_widget.dart │ │ │ │ ├── invitation_section │ │ │ │ └── invitation_section_widget.dart │ │ │ │ ├── security_and_privacy_section │ │ │ │ ├── security_and_privacy_section_widget.dart │ │ │ │ ├── sessions_widget.dart │ │ │ │ ├── show_recovery_key_widget.dart │ │ │ │ ├── store_the_key_securely_widget.dart │ │ │ │ └── uncomfirmed_email_widget.dart │ │ │ │ ├── space_activities_section │ │ │ │ ├── item_widgets │ │ │ │ │ ├── activity_date_item_widget.dart │ │ │ │ │ ├── activity_item_container_widgets.dart │ │ │ │ │ ├── activity_item_widget.dart │ │ │ │ │ ├── activity_membership_container_widget.dart │ │ │ │ │ ├── activity_space_container_widget.dart │ │ │ │ │ ├── space_activities_item_widget.dart │ │ │ │ │ └── type_widgets │ │ │ │ │ │ ├── attachment.dart │ │ │ │ │ │ ├── comment.dart │ │ │ │ │ │ ├── eventDateChange.dart │ │ │ │ │ │ ├── reaction.dart │ │ │ │ │ │ ├── references.dart │ │ │ │ │ │ ├── roomAvatar.dart │ │ │ │ │ │ ├── roomName.dart │ │ │ │ │ │ ├── roomTopic.dart │ │ │ │ │ │ ├── rsvpMaybe.dart │ │ │ │ │ │ ├── rsvpNo.dart │ │ │ │ │ │ ├── rsvpYes.dart │ │ │ │ │ │ ├── taskAccepted.dart │ │ │ │ │ │ ├── taskAdd.dart │ │ │ │ │ │ ├── taskComplete.dart │ │ │ │ │ │ ├── taskDecline.dart │ │ │ │ │ │ ├── taskDueDateChange.dart │ │ │ │ │ │ └── taskReOpen.dart │ │ │ │ └── space_activities_section_widget.dart │ │ │ │ └── sync_section │ │ │ │ └── sync_state_section_widget.dart │ │ ├── analytics │ │ │ ├── actions │ │ │ │ └── telemetry_analytics.dart │ │ │ ├── pages │ │ │ │ └── analytics_opt_in_page.dart │ │ │ └── providers │ │ │ │ └── analytics_preferences_provider.dart │ │ ├── attachments │ │ │ ├── actions │ │ │ │ ├── add_edit_link_bottom_sheet.dart │ │ │ │ ├── attach_ref_details.dart │ │ │ │ ├── handle_selected_attachments.dart │ │ │ │ └── select_attachment.dart │ │ │ ├── models │ │ │ │ └── attachment_model.dart │ │ │ ├── providers │ │ │ │ ├── attachment_providers.dart │ │ │ │ └── notifiers │ │ │ │ │ └── attachments_notifiers.dart │ │ │ ├── types.dart │ │ │ └── widgets │ │ │ │ ├── attachment_container.dart │ │ │ │ ├── attachment_section.dart │ │ │ │ ├── attachment_selection_options.dart │ │ │ │ ├── msg_content_attachment_item.dart │ │ │ │ └── reference_attachment_item.dart │ │ ├── auth │ │ │ ├── actions │ │ │ │ └── register_action.dart │ │ │ ├── pages │ │ │ │ ├── forgot_password.dart │ │ │ │ ├── logged_out_screen.dart │ │ │ │ ├── login_page.dart │ │ │ │ └── register_page.dart │ │ │ ├── providers │ │ │ │ ├── auth_providers.dart │ │ │ │ └── notifiers │ │ │ │ │ └── auth_notifier.dart │ │ │ └── widgets │ │ │ │ └── logo_widget.dart │ │ ├── backups │ │ │ ├── dialogs │ │ │ │ ├── provide_recovery_key_dialog.dart │ │ │ │ ├── show_confirm_reset_identity.dart │ │ │ │ ├── show_confirm_rotate.dart │ │ │ │ └── show_recovery_key.dart │ │ │ ├── providers │ │ │ │ ├── backup_manager_provider.dart │ │ │ │ ├── backup_state_providers.dart │ │ │ │ └── notifiers │ │ │ │ │ └── backup_state_notifier.dart │ │ │ ├── types.dart │ │ │ └── widgets │ │ │ │ └── backup_state_widget.dart │ │ ├── bookmarks │ │ │ ├── actions │ │ │ │ └── bookmarking.dart │ │ │ ├── providers │ │ │ │ ├── bookmarks_provider.dart │ │ │ │ └── notifiers.dart │ │ │ ├── types.dart │ │ │ ├── util.dart │ │ │ └── widgets │ │ │ │ └── bookmark_action.dart │ │ ├── bug_report │ │ │ ├── actions │ │ │ │ ├── open_bug_report.dart │ │ │ │ └── submit_bug_report.dart │ │ │ ├── pages │ │ │ │ └── bug_report_page.dart │ │ │ └── providers │ │ │ │ └── bug_report_providers.dart │ │ ├── calendar_sync │ │ │ ├── actions │ │ │ │ ├── calendar_sync_actions.dart │ │ │ │ └── set_room_sync_preference.dart │ │ │ ├── calendar_sync.dart │ │ │ ├── calendar_sync_permission_page.dart │ │ │ └── providers │ │ │ │ ├── calendar_sync_active_provider.dart │ │ │ │ └── events_to_sync_provider.dart │ │ ├── categories │ │ │ ├── actions │ │ │ │ └── save_categories.dart │ │ │ ├── model │ │ │ │ └── CategoryModelLocal.dart │ │ │ ├── organize_categories_page.dart │ │ │ ├── providers │ │ │ │ └── categories_providers.dart │ │ │ ├── utils │ │ │ │ └── category_utils.dart │ │ │ └── widgets │ │ │ │ ├── add_edit_category.dart │ │ │ │ └── category_header_view.dart │ │ ├── chat │ │ │ ├── actions │ │ │ │ └── create_chat.dart │ │ │ ├── dialogs │ │ │ │ └── encryption_info_drawer.dart │ │ │ ├── models │ │ │ │ ├── chat_input_state │ │ │ │ │ ├── chat_input_state.dart │ │ │ │ │ └── chat_input_state.freezed.dart │ │ │ │ ├── chat_list_state │ │ │ │ │ ├── chat_list_state.dart │ │ │ │ │ └── chat_list_state.freezed.dart │ │ │ │ ├── chat_room_state │ │ │ │ │ ├── chat_room_state.dart │ │ │ │ │ └── chat_room_state.freezed.dart │ │ │ │ ├── media_chat_state │ │ │ │ │ ├── media_chat_state.dart │ │ │ │ │ └── media_chat_state.freezed.dart │ │ │ │ └── room_list_filter_state │ │ │ │ │ ├── room_list_filter_state.dart │ │ │ │ │ └── room_list_filter_state.freezed.dart │ │ │ ├── pages │ │ │ │ ├── chat_select_page.dart │ │ │ │ ├── room_page.dart │ │ │ │ ├── room_profile_page.dart │ │ │ │ └── sub_chats_page.dart │ │ │ ├── providers │ │ │ │ ├── chat_providers.dart │ │ │ │ ├── create_chat_providers.dart │ │ │ │ ├── notifiers │ │ │ │ │ ├── chat_input_notifier.dart │ │ │ │ │ ├── chat_room_notifier.dart │ │ │ │ │ └── media_chat_notifier.dart │ │ │ │ └── room_list_filter_provider.dart │ │ │ ├── utils.dart │ │ │ └── widgets │ │ │ │ ├── avatar_builder.dart │ │ │ │ ├── bubble_builder.dart │ │ │ │ ├── chat_layout_builder.dart │ │ │ │ ├── chats_list.dart │ │ │ │ ├── convo_card.dart │ │ │ │ ├── create_chat.dart │ │ │ │ ├── custom_input.dart │ │ │ │ ├── custom_message_builder.dart │ │ │ │ ├── emoji │ │ │ │ ├── emoji_container.dart │ │ │ │ ├── emoji_reaction_item.dart │ │ │ │ └── emoji_row.dart │ │ │ │ ├── file_message_builder.dart │ │ │ │ ├── image_message_builder.dart │ │ │ │ ├── member_list.dart │ │ │ │ ├── mention_profile_builder.dart │ │ │ │ ├── message_actions.dart │ │ │ │ ├── message_metadata_builder.dart │ │ │ │ ├── messages │ │ │ │ ├── encrypted_info.dart │ │ │ │ ├── encrypted_message.dart │ │ │ │ ├── invite.dart │ │ │ │ ├── location_message.dart │ │ │ │ ├── membership_update.dart │ │ │ │ ├── poll_start_message.dart │ │ │ │ ├── redacted_message.dart │ │ │ │ ├── simple_state_update.dart │ │ │ │ ├── sticker_message.dart │ │ │ │ └── topic.dart │ │ │ │ ├── pill_builder.dart │ │ │ │ ├── room_avatar.dart │ │ │ │ ├── rooms_list.dart │ │ │ │ ├── skeletons │ │ │ │ ├── action_item_skeleton_widget.dart │ │ │ │ └── members_list_skeleton_widget.dart │ │ │ │ ├── text_message_builder.dart │ │ │ │ └── video_message_builder.dart │ │ ├── chat_ng │ │ │ ├── actions │ │ │ │ ├── attachment_upload_action.dart │ │ │ │ ├── copy_message_action.dart │ │ │ │ ├── redact_message_action.dart │ │ │ │ ├── report_message_action.dart │ │ │ │ ├── send_message_action.dart │ │ │ │ └── toggle_reaction_action.dart │ │ │ ├── dialogs │ │ │ │ └── message_actions.dart │ │ │ ├── globals.dart │ │ │ ├── layout │ │ │ │ └── chat_ng_layout_builder.dart │ │ │ ├── models │ │ │ │ ├── chat_editor_state.dart │ │ │ │ └── chat_room_state │ │ │ │ │ ├── chat_room_state.dart │ │ │ │ │ └── chat_room_state.freezed.dart │ │ │ ├── pages │ │ │ │ ├── chat_room.dart │ │ │ │ └── chat_select_page.dart │ │ │ ├── providers │ │ │ │ ├── chat_list_providers.dart │ │ │ │ ├── chat_room_messages_provider.dart │ │ │ │ ├── chat_typing_event_providers.dart │ │ │ │ └── notifiers │ │ │ │ │ ├── chat_editor_notifier.dart │ │ │ │ │ └── chat_room_messages_notifier.dart │ │ │ ├── rooms_list │ │ │ │ └── widgets │ │ │ │ │ ├── chat_item_widget.dart │ │ │ │ │ ├── chats_list.dart │ │ │ │ │ └── rooms_list.dart │ │ │ ├── utils.dart │ │ │ └── widgets │ │ │ │ ├── chat_bubble.dart │ │ │ │ ├── chat_editor │ │ │ │ ├── chat_editor.dart │ │ │ │ ├── chat_editor_actions_preview.dart │ │ │ │ ├── chat_editor_loading.dart │ │ │ │ ├── chat_editor_no_access.dart │ │ │ │ ├── chat_editor_view.dart │ │ │ │ └── chat_emoji_picker.dart │ │ │ │ ├── chat_item │ │ │ │ ├── bookmark_icon_widget.dart │ │ │ │ ├── chat_typing_lastmessage_container_widget.dart │ │ │ │ ├── display_name_widget.dart │ │ │ │ ├── last_message_time_widget.dart │ │ │ │ ├── last_message_widget.dart │ │ │ │ ├── mute_icon_widget.dart │ │ │ │ ├── typing_indicator.dart │ │ │ │ └── unread_count_widget.dart │ │ │ │ ├── chat_messages.dart │ │ │ │ ├── chat_room │ │ │ │ └── app_bar_widget.dart │ │ │ │ ├── events │ │ │ │ ├── chat_event.dart │ │ │ │ ├── file_message_event.dart │ │ │ │ ├── general_message_event_widget.dart │ │ │ │ ├── image_message_event.dart │ │ │ │ ├── media_meessage_event_widget.dart │ │ │ │ ├── message_event_item.dart │ │ │ │ ├── profile_changes_event_widget.dart │ │ │ │ ├── replied_to_event.dart │ │ │ │ ├── room_membership_event_widget.dart │ │ │ │ ├── room_message_event_widget.dart │ │ │ │ ├── room_update_event.dart │ │ │ │ ├── state_event_container_widget.dart │ │ │ │ ├── text_message_event.dart │ │ │ │ ├── text_message_widget.dart │ │ │ │ └── video_message_event.dart │ │ │ │ ├── message_actions_widget.dart │ │ │ │ ├── message_timestamp_widget.dart │ │ │ │ ├── reactions │ │ │ │ ├── reaction_chips_widget.dart │ │ │ │ ├── reaction_detail_sheet.dart │ │ │ │ ├── reaction_selector.dart │ │ │ │ └── reactions_list.dart │ │ │ │ ├── read_receipts_widget.dart │ │ │ │ ├── replied_to_preview.dart │ │ │ │ ├── sending_error_dialog.dart │ │ │ │ └── sending_state_widget.dart │ │ ├── chat_ui_showcase │ │ │ ├── mocks │ │ │ │ ├── convo │ │ │ │ │ ├── mock_convo.dart │ │ │ │ │ ├── mock_membership_content.dart │ │ │ │ │ ├── mock_profile_content.dart │ │ │ │ │ └── timeline │ │ │ │ │ │ ├── mock_ffi_list_reaction_record.dart │ │ │ │ │ │ ├── mock_ffi_list_timeline_item.dart │ │ │ │ │ │ ├── mock_reaction_record.dart │ │ │ │ │ │ ├── mock_timeline_event_item.dart │ │ │ │ │ │ ├── mock_timeline_item.dart │ │ │ │ │ │ ├── mock_timeline_item_diff.dart │ │ │ │ │ │ └── mock_timeline_stream.dart │ │ │ │ ├── general │ │ │ │ │ ├── mock_ffi_list_ffi_string.dart │ │ │ │ │ ├── mock_ffi_string.dart │ │ │ │ │ ├── mock_msg_content.dart │ │ │ │ │ ├── mock_option_compose_draft.dart │ │ │ │ │ ├── mock_option_string.dart │ │ │ │ │ └── mock_userId.dart │ │ │ │ ├── providers │ │ │ │ │ └── mock_chats_provider.dart │ │ │ │ ├── room │ │ │ │ │ ├── mock_member.dart │ │ │ │ │ └── mock_room.dart │ │ │ │ ├── showcase │ │ │ │ │ ├── convo_showcase_data.dart │ │ │ │ │ └── data │ │ │ │ │ │ ├── general_usecases.dart │ │ │ │ │ │ ├── membership_usecases.dart │ │ │ │ │ │ ├── profile_change_usecases.dart │ │ │ │ │ │ └── text_and_media_usecases.dart │ │ │ │ └── user │ │ │ │ │ └── mock_user.dart │ │ │ └── pages │ │ │ │ └── chat_list_showcase_page.dart │ │ ├── cli │ │ │ ├── commands │ │ │ │ ├── backup-and-reset.dart │ │ │ │ ├── info.dart │ │ │ │ └── settings.dart │ │ │ ├── main.dart │ │ │ └── util.dart │ │ ├── comments │ │ │ ├── actions │ │ │ │ └── submit_comment.dart │ │ │ ├── providers │ │ │ │ └── comments_providers.dart │ │ │ ├── types.dart │ │ │ └── widgets │ │ │ │ ├── add_comment_widget.dart │ │ │ │ ├── comment_item_widget.dart │ │ │ │ ├── comment_list_empty_state_widget.dart │ │ │ │ ├── comment_list_widget.dart │ │ │ │ ├── comments_section_widget.dart │ │ │ │ ├── skeletons │ │ │ │ ├── comment_item_skeleton_widget.dart │ │ │ │ └── comment_list_skeleton_widget.dart │ │ │ │ └── time_ago_widget.dart │ │ ├── cross_signing │ │ │ ├── providers │ │ │ │ ├── notifiers │ │ │ │ │ └── verification_notifiers.dart │ │ │ │ └── verification_providers.dart │ │ │ ├── views │ │ │ │ ├── request_cancelled.dart │ │ │ │ ├── request_created.dart │ │ │ │ ├── request_done.dart │ │ │ │ ├── request_ready.dart │ │ │ │ ├── sas_accepted.dart │ │ │ │ ├── sas_cancelled.dart │ │ │ │ ├── sas_keys_exchanged.dart │ │ │ │ ├── sas_started.dart │ │ │ │ └── verification_request.dart │ │ │ └── widgets │ │ │ │ └── cross_signing.dart │ │ ├── datetime │ │ │ └── providers │ │ │ │ ├── notifiers │ │ │ │ └── now_notifier.dart │ │ │ │ └── utc_now_provider.dart │ │ ├── deep_linking │ │ │ ├── actions │ │ │ │ ├── forward_to_object.dart │ │ │ │ ├── handle_deep_link_uri.dart │ │ │ │ ├── show_item_preview.dart │ │ │ │ └── show_qr_code.dart │ │ │ ├── pages │ │ │ │ └── scan_qr_code.dart │ │ │ ├── parse_acter_uri.dart │ │ │ ├── types.dart │ │ │ ├── util.dart │ │ │ └── widgets │ │ │ │ ├── inline_item_preview.dart │ │ │ │ ├── item_preview_card.dart │ │ │ │ ├── qr_code_button.dart │ │ │ │ └── reference_details_item.dart │ │ ├── desktop_setup │ │ │ ├── pages │ │ │ │ └── desktop_setup_page.dart │ │ │ └── providers │ │ │ │ └── desktop_setup_provider.dart │ │ ├── device_permissions │ │ │ ├── calendar.dart │ │ │ └── notification.dart │ │ ├── encryption_backup_feature │ │ │ ├── actions │ │ │ │ └── external_storing.dart │ │ │ └── widgets │ │ │ │ └── encryption_backup_widget.dart │ │ ├── events │ │ │ ├── actions │ │ │ │ └── sort_event_list.dart │ │ │ ├── model │ │ │ │ └── keys.dart │ │ │ ├── pages │ │ │ │ ├── create_event_page.dart │ │ │ │ ├── event_details_page.dart │ │ │ │ └── event_list_page.dart │ │ │ ├── providers │ │ │ │ ├── event_providers.dart │ │ │ │ ├── event_type_provider.dart │ │ │ │ └── notifiers │ │ │ │ │ ├── event_notifiers.dart │ │ │ │ │ ├── participants_notifier.dart │ │ │ │ │ └── rsvp_notifier.dart │ │ │ ├── utils │ │ │ │ └── events_utils.dart │ │ │ └── widgets │ │ │ │ ├── change_date_sheet.dart │ │ │ │ ├── event_date_widget.dart │ │ │ │ ├── event_item.dart │ │ │ │ ├── event_list_empty_state.dart │ │ │ │ ├── event_list_widget.dart │ │ │ │ ├── participants_list.dart │ │ │ │ └── skeletons │ │ │ │ ├── event_details_skeleton_widget.dart │ │ │ │ ├── event_item_skeleton_widget.dart │ │ │ │ └── event_list_skeleton_widget.dart │ │ ├── files │ │ │ ├── actions │ │ │ │ ├── download_file.dart │ │ │ │ ├── file_share.dart │ │ │ │ ├── pick_avatar.dart │ │ │ │ └── pick_image.dart │ │ │ └── widgets │ │ │ │ └── share_file_button.dart │ │ ├── home │ │ │ ├── data │ │ │ │ ├── keys.dart │ │ │ │ └── models │ │ │ │ │ └── nav_item.dart │ │ │ ├── pages │ │ │ │ └── dashboard.dart │ │ │ ├── providers │ │ │ │ ├── client_providers.dart │ │ │ │ ├── events.dart │ │ │ │ ├── navigation.dart │ │ │ │ ├── notifiers │ │ │ │ │ ├── always_client_notifier.dart │ │ │ │ │ └── client_notifier.dart │ │ │ │ └── task_providers.dart │ │ │ └── widgets │ │ │ │ ├── activities_icon.dart │ │ │ │ ├── badged_icon.dart │ │ │ │ ├── chats_icon.dart │ │ │ │ ├── custom_selected_icon.dart │ │ │ │ ├── features_nav_widget.dart │ │ │ │ ├── important_activities_section.dart │ │ │ │ ├── in_dashboard.dart │ │ │ │ ├── my_events.dart │ │ │ │ ├── my_spaces_section.dart │ │ │ │ ├── my_tasks.dart │ │ │ │ ├── quick_action_buttons.dart │ │ │ │ ├── sidebar_widget.dart │ │ │ │ └── space_chip.dart │ │ ├── intro │ │ │ └── pages │ │ │ │ ├── intro_page.dart │ │ │ │ └── intro_profile.dart │ │ ├── invitations │ │ │ ├── pages │ │ │ │ └── invites_page.dart │ │ │ ├── providers │ │ │ │ ├── invitations_providers.dart │ │ │ │ └── notifiers │ │ │ │ │ └── invitation_manager_notifier.dart │ │ │ └── widgets │ │ │ │ ├── has_invites_tile.dart │ │ │ │ └── invitation_item_widget.dart │ │ ├── invite_members │ │ │ ├── pages │ │ │ │ ├── invite_individual_users.dart │ │ │ │ ├── invite_page.dart │ │ │ │ ├── invite_pending.dart │ │ │ │ ├── invite_space_members.dart │ │ │ │ └── share_invite_code.dart │ │ │ ├── providers │ │ │ │ └── other_spaces_for_invite_members.dart │ │ │ └── widgets │ │ │ │ ├── direct_invite.dart │ │ │ │ ├── invite_code_ui.dart │ │ │ │ └── space_member_invite_card.dart │ │ ├── labs │ │ │ ├── feature_flagger.dart │ │ │ ├── model │ │ │ │ └── labs_features.dart │ │ │ └── providers │ │ │ │ ├── labs_providers.dart │ │ │ │ └── notifiers │ │ │ │ └── labs_features.dart │ │ ├── link_room │ │ │ ├── actions │ │ │ │ └── unlink_child_room.dart │ │ │ ├── pages │ │ │ │ └── link_room_page.dart │ │ │ ├── providers │ │ │ │ └── link_room_providers.dart │ │ │ ├── types.dart │ │ │ └── widgets │ │ │ │ ├── link_room_trailing.dart │ │ │ │ └── link_space_list_item.dart │ │ ├── main │ │ │ ├── app_shell.dart │ │ │ ├── providers │ │ │ │ └── main_providers.dart │ │ │ └── widgets │ │ │ │ └── bottom_navigation_widget.dart │ │ ├── member │ │ │ ├── dialogs │ │ │ │ ├── show_block_user_dialog.dart │ │ │ │ ├── show_change_power_level_dialog.dart │ │ │ │ ├── show_kick_and_ban_user_dialog.dart │ │ │ │ ├── show_kick_user_dialog.dart │ │ │ │ ├── show_member_info_drawer.dart │ │ │ │ └── show_unblock_user_dialog.dart │ │ │ ├── providers │ │ │ │ └── invite_providers.dart │ │ │ └── widgets │ │ │ │ ├── member_info_drawer.dart │ │ │ │ ├── member_info_skeleton.dart │ │ │ │ ├── member_list_entry.dart │ │ │ │ ├── user_builder.dart │ │ │ │ └── user_search_results.dart │ │ ├── news │ │ │ ├── actions │ │ │ │ ├── make_image_slide.dart │ │ │ │ ├── make_text_slide.dart │ │ │ │ ├── make_video_slide.dart │ │ │ │ ├── submit_news.dart │ │ │ │ └── submit_story.dart │ │ │ ├── model │ │ │ │ ├── keys.dart │ │ │ │ ├── news_post_color_data.dart │ │ │ │ ├── news_post_state.dart │ │ │ │ ├── news_post_state.freezed.dart │ │ │ │ ├── news_references_model.dart │ │ │ │ ├── news_slide_model.dart │ │ │ │ └── type │ │ │ │ │ ├── update_entry.dart │ │ │ │ │ └── update_slide.dart │ │ │ ├── news_utils │ │ │ │ └── news_utils.dart │ │ │ ├── pages │ │ │ │ ├── add_news │ │ │ │ │ ├── add_news_page.dart │ │ │ │ │ └── add_news_post_to_page.dart │ │ │ │ └── news_list_page.dart │ │ │ ├── providers │ │ │ │ ├── news_post_editor_providers.dart │ │ │ │ ├── news_providers.dart │ │ │ │ └── notifiers │ │ │ │ │ ├── news_list_notifier.dart │ │ │ │ │ └── story_list_notifier.dart │ │ │ └── widgets │ │ │ │ ├── news_full_view.dart │ │ │ │ ├── news_grid_view.dart │ │ │ │ ├── news_item │ │ │ │ ├── news_item.dart │ │ │ │ ├── news_post_time_widget.dart │ │ │ │ └── news_side_bar.dart │ │ │ │ ├── news_item_slide │ │ │ │ ├── image_slide.dart │ │ │ │ ├── news_filter_buttons.dart │ │ │ │ ├── news_media_error_widget.dart │ │ │ │ ├── news_slide_actions.dart │ │ │ │ ├── news_slide_item.dart │ │ │ │ ├── text_slide.dart │ │ │ │ └── video_slide.dart │ │ │ │ ├── news_post_editor │ │ │ │ ├── news_slide_options.dart │ │ │ │ ├── post_attachment_options.dart │ │ │ │ ├── select_action_item.dart │ │ │ │ └── selected_action_button.dart │ │ │ │ └── news_skeleton_widget.dart │ │ ├── notifications │ │ │ ├── actions │ │ │ │ ├── autosubscribe.dart │ │ │ │ ├── notification_sync_actions.dart │ │ │ │ ├── subscribe_object_push.dart │ │ │ │ ├── unsubscribe_object_push.dart │ │ │ │ └── update_autosubscribe.dart │ │ │ ├── pages │ │ │ │ ├── notification_permission_page.dart │ │ │ │ └── notifications_page.dart │ │ │ ├── providers │ │ │ │ ├── notification_settings_providers.dart │ │ │ │ ├── notifiers │ │ │ │ │ └── notification_settings_notifier.dart │ │ │ │ └── object_notifications_settings_provider.dart │ │ │ ├── types.dart │ │ │ └── widgets │ │ │ │ ├── labs_notifications_settings_tile.dart │ │ │ │ └── object_notification_status.dart │ │ ├── onboarding │ │ │ ├── actions │ │ │ │ ├── create_new_space_onboarding_actions.dart │ │ │ │ ├── customization_actions.dart │ │ │ │ ├── generate_invitecode_externally_actions.dart │ │ │ │ └── recommended_space_actions.dart │ │ │ ├── pages │ │ │ │ ├── customization_page.dart │ │ │ │ ├── encrption_backup_page.dart │ │ │ │ ├── link_email_page.dart │ │ │ │ ├── onboarding_encryption_recovery_page.dart │ │ │ │ ├── onboarding_page.dart │ │ │ │ ├── onboarding_space_creation_page.dart │ │ │ │ ├── recommended_spaces_page.dart │ │ │ │ ├── redeem_invitations_page.dart │ │ │ │ ├── save_username_page.dart │ │ │ │ └── upload_avatar_page.dart │ │ │ ├── providers │ │ │ │ └── onboarding_provider.dart │ │ │ ├── types.dart │ │ │ └── widgets │ │ │ │ ├── create_new_space_widget.dart │ │ │ │ ├── expect_decryption_failures_widget.dart │ │ │ │ ├── missing_encryption_backup_widget.dart │ │ │ │ ├── onboarding_notification_skeleton.dart │ │ │ │ └── remindme_key_dialog.dart │ │ ├── pins │ │ │ ├── actions │ │ │ │ ├── attachment_leading_icon.dart │ │ │ │ ├── edit_pin_actions.dart │ │ │ │ ├── pin_update_actions.dart │ │ │ │ ├── reduct_pin_action.dart │ │ │ │ ├── report_pin_action.dart │ │ │ │ ├── select_pin_attachments.dart │ │ │ │ ├── set_pin_description.dart │ │ │ │ └── set_pin_links.dart │ │ │ ├── models │ │ │ │ ├── create_pin_state │ │ │ │ │ ├── create_pin_state.dart │ │ │ │ │ ├── create_pin_state.freezed.dart │ │ │ │ │ └── pin_attachment_model.dart │ │ │ │ └── pin_edit_state │ │ │ │ │ ├── pin_edit_state.dart │ │ │ │ │ └── pin_edit_state.freezed.dart │ │ │ ├── pages │ │ │ │ ├── create_pin_page.dart │ │ │ │ ├── pin_details_page.dart │ │ │ │ └── pins_list_page.dart │ │ │ ├── providers │ │ │ │ ├── notifiers │ │ │ │ │ ├── create_pin_notifier.dart │ │ │ │ │ ├── edit_state_notifier.dart │ │ │ │ │ └── pins_notifiers.dart │ │ │ │ └── pins_provider.dart │ │ │ └── widgets │ │ │ │ ├── fake_link_attachment_item.dart │ │ │ │ ├── pin_attachment_options.dart │ │ │ │ ├── pin_list_empty_state.dart │ │ │ │ ├── pin_list_item_widget.dart │ │ │ │ ├── pin_list_skeleton.dart │ │ │ │ └── pin_list_widget.dart │ │ ├── preview │ │ │ ├── actions │ │ │ │ └── show_room_preview.dart │ │ │ ├── types.dart │ │ │ └── widgets │ │ │ │ └── room_preview.dart │ │ ├── profile │ │ │ ├── pages │ │ │ │ └── my_profile_page.dart │ │ │ └── widgets │ │ │ │ └── skeletons │ │ │ │ └── my_profile_skeletons_widget.dart │ │ ├── public_room_search │ │ │ ├── models │ │ │ │ ├── public_search_filters.dart │ │ │ │ ├── public_search_filters.freezed.dart │ │ │ │ └── publiic_search_result_state.dart │ │ │ ├── pages │ │ │ │ └── search_public_directory.dart │ │ │ ├── providers │ │ │ │ ├── notifiers │ │ │ │ │ ├── public_search_filters_notifier.dart │ │ │ │ │ └── public_spaces_notifier.dart │ │ │ │ ├── public_search_providers.dart │ │ │ │ └── public_space_info_provider.dart │ │ │ ├── types.dart │ │ │ └── widgets │ │ │ │ ├── maybe_direct_room_action_widget.dart │ │ │ │ ├── public_room_item.dart │ │ │ │ ├── public_room_search.dart │ │ │ │ └── server_selection_field.dart │ │ ├── read_receipts │ │ │ ├── providers │ │ │ │ └── read_receipts.dart │ │ │ └── widgets │ │ │ │ └── read_counter.dart │ │ ├── room │ │ │ ├── actions │ │ │ │ ├── avatar_upload.dart │ │ │ │ └── join_room.dart │ │ │ ├── join_rule │ │ │ │ ├── join_rule_chip.dart │ │ │ │ ├── room_join_rule_item.dart │ │ │ │ ├── room_join_rule_selector.dart │ │ │ │ └── room_join_rule_type.dart │ │ │ ├── model │ │ │ │ └── room_join_rule.dart │ │ │ ├── providers │ │ │ │ ├── notifiers │ │ │ │ │ └── user_settings_notifier.dart │ │ │ │ ├── room_preview_provider.dart │ │ │ │ └── user_settings_provider.dart │ │ │ └── widgets │ │ │ │ ├── notifications_settings_tile.dart │ │ │ │ └── room_chip.dart │ │ ├── search │ │ │ ├── model │ │ │ │ └── keys.dart │ │ │ ├── pages │ │ │ │ └── quick_search_page.dart │ │ │ ├── providers │ │ │ │ └── quick_search_providers.dart │ │ │ └── widgets │ │ │ │ └── chat_list_widget.dart │ │ ├── settings │ │ │ ├── model │ │ │ │ └── language_model.dart │ │ │ ├── pages │ │ │ │ ├── backup_page.dart │ │ │ │ ├── blocked_users.dart │ │ │ │ ├── calendar_settings_page.dart │ │ │ │ ├── change_password.dart │ │ │ │ ├── chat_settings_page.dart │ │ │ │ ├── customizations_settings_page.dart │ │ │ │ ├── email_addresses.dart │ │ │ │ ├── info_page.dart │ │ │ │ ├── labs_page.dart │ │ │ │ ├── language_select_page.dart │ │ │ │ ├── licenses_page.dart │ │ │ │ ├── sessions_page.dart │ │ │ │ └── settings_page.dart │ │ │ ├── providers │ │ │ │ ├── app_settings_provider.dart │ │ │ │ ├── notifications_mode_provider.dart │ │ │ │ ├── notifiers │ │ │ │ │ ├── app_settings_notifier.dart │ │ │ │ │ ├── devices_notifier.dart │ │ │ │ │ └── locale_notifier.dart │ │ │ │ ├── session_providers.dart │ │ │ │ └── settings_providers.dart │ │ │ └── widgets │ │ │ │ ├── app_notifications_settings_tile.dart │ │ │ │ ├── auto_download_tile.dart │ │ │ │ ├── custom_settings_tile.dart │ │ │ │ ├── email_address_card.dart │ │ │ │ ├── options_settings_tile.dart │ │ │ │ ├── session_card.dart │ │ │ │ ├── settings_menu.dart │ │ │ │ ├── settings_section_with_title_actions.dart │ │ │ │ └── typing_notice_tile.dart │ │ ├── share │ │ │ ├── action │ │ │ │ ├── mail_to.dart │ │ │ │ ├── shareTo.dart │ │ │ │ └── share_space_object_action.dart │ │ │ └── widgets │ │ │ │ ├── attach_options.dart │ │ │ │ ├── external_share_options.dart │ │ │ │ └── file_share_options.dart │ │ ├── showcases │ │ │ ├── pages │ │ │ │ ├── invitations │ │ │ │ │ ├── invitations_section.dart │ │ │ │ │ └── mock_invitations.dart │ │ │ │ └── showcase_list_page.dart │ │ │ └── routes.dart │ │ ├── space │ │ │ ├── actions │ │ │ │ ├── activate_feature.dart │ │ │ │ ├── convert_into_acter_space.dart │ │ │ │ ├── has_seen_suggested.dart │ │ │ │ ├── set_acter_feature.dart │ │ │ │ ├── set_child_room_suggested.dart │ │ │ │ ├── set_space_title.dart │ │ │ │ ├── set_space_topic.dart │ │ │ │ └── update_feature_power_level.dart │ │ │ ├── dialogs │ │ │ │ ├── leave_space.dart │ │ │ │ └── suggested_rooms.dart │ │ │ ├── pages │ │ │ │ ├── members_page.dart │ │ │ │ └── space_details_page.dart │ │ │ ├── providers │ │ │ │ ├── notifiers │ │ │ │ │ └── relations_notifier.dart │ │ │ │ ├── space_navbar_provider.dart │ │ │ │ ├── suggested_provider.dart │ │ │ │ └── topic_provider.dart │ │ │ ├── settings │ │ │ │ ├── pages │ │ │ │ │ ├── apps_settings_page.dart │ │ │ │ │ ├── index_page.dart │ │ │ │ │ ├── notification_configuration_page.dart │ │ │ │ │ └── visibility_accessibility_page.dart │ │ │ │ └── widgets │ │ │ │ │ └── space_settings_menu.dart │ │ │ └── widgets │ │ │ │ ├── loading_convo_card.dart │ │ │ │ ├── member_avatar.dart │ │ │ │ ├── related │ │ │ │ ├── chats_helpers.dart │ │ │ │ ├── spaces_helpers.dart │ │ │ │ └── util.dart │ │ │ │ ├── skeletons │ │ │ │ └── space_details_skeletons.dart │ │ │ │ ├── space_header.dart │ │ │ │ ├── space_header_profile.dart │ │ │ │ ├── space_info.dart │ │ │ │ ├── space_sections │ │ │ │ ├── about_section.dart │ │ │ │ ├── members_section.dart │ │ │ │ ├── news_section.dart │ │ │ │ ├── other_chats_section.dart │ │ │ │ ├── other_sub_spaces_section.dart │ │ │ │ ├── section_header.dart │ │ │ │ ├── space_actions_section.dart │ │ │ │ ├── spaces_loading_error_section.dart │ │ │ │ ├── suggested_chats_section.dart │ │ │ │ └── suggested_spaces_section.dart │ │ │ │ └── space_toolbar.dart │ │ ├── spaces │ │ │ ├── actions │ │ │ │ ├── create_space.dart │ │ │ │ └── select_permission.dart │ │ │ ├── model │ │ │ │ ├── default_space_feature_settings.dart │ │ │ │ ├── keys.dart │ │ │ │ ├── permission_config.dart │ │ │ │ └── space_feature_state.dart │ │ │ ├── pages │ │ │ │ ├── create_space_page.dart │ │ │ │ ├── space_list_page.dart │ │ │ │ └── sub_spaces_page.dart │ │ │ ├── providers │ │ │ │ ├── space_creation_providers.dart │ │ │ │ └── space_list_provider.dart │ │ │ └── widgets │ │ │ │ ├── create_space │ │ │ │ ├── space_configuration_widget.dart │ │ │ │ └── space_features_widget.dart │ │ │ │ ├── space_list_empty_state.dart │ │ │ │ ├── space_list_skeleton.dart │ │ │ │ └── space_list_widget.dart │ │ ├── super_invites │ │ │ ├── dialogs │ │ │ │ └── redeem_dialog.dart │ │ │ ├── pages │ │ │ │ ├── create_super_invite_page.dart │ │ │ │ └── invite_list_page.dart │ │ │ ├── providers │ │ │ │ └── super_invites_providers.dart │ │ │ ├── utils.dart │ │ │ └── widgets │ │ │ │ ├── invite_list_item.dart │ │ │ │ ├── invite_list_skeleton.dart │ │ │ │ ├── invite_list_widget.dart │ │ │ │ └── redeem_token_widget.dart │ │ ├── tasks │ │ │ ├── actions │ │ │ │ ├── add_task.dart │ │ │ │ ├── create_task.dart │ │ │ │ ├── my_task_actions.dart │ │ │ │ ├── select_tasklist.dart │ │ │ │ └── update_tasklist.dart │ │ │ ├── models │ │ │ │ └── tasks.dart │ │ │ ├── pages │ │ │ │ ├── my_tasks_page.dart │ │ │ │ ├── task_item_detail_page.dart │ │ │ │ ├── task_list_details_page.dart │ │ │ │ └── tasks_list_page.dart │ │ │ ├── providers │ │ │ │ ├── notifiers.dart │ │ │ │ ├── task_items_providers.dart │ │ │ │ └── tasklists_providers.dart │ │ │ ├── sheets │ │ │ │ └── create_update_task_list.dart │ │ │ └── widgets │ │ │ │ ├── all_tasks_done.dart │ │ │ │ ├── due_chip.dart │ │ │ │ ├── due_picker.dart │ │ │ │ ├── empty_task_list.dart │ │ │ │ ├── skeleton │ │ │ │ ├── task_item_detail_page_skeleton.dart │ │ │ │ ├── task_items_skeleton.dart │ │ │ │ └── tasks_list_skeleton.dart │ │ │ │ ├── task_item.dart │ │ │ │ ├── task_items_list_widget.dart │ │ │ │ ├── task_list_item_card.dart │ │ │ │ ├── task_list_widget.dart │ │ │ │ ├── task_lists_empty.dart │ │ │ │ └── task_status_widget.dart │ │ └── users │ │ │ ├── actions │ │ │ └── show_global_user_dialog.dart │ │ │ ├── providers │ │ │ └── user_profile_provider.dart │ │ │ └── widgets │ │ │ ├── message_user_button.dart │ │ │ └── user_info_drawer.dart │ ├── l10n │ │ ├── app_ar.arb │ │ ├── app_da.arb │ │ ├── app_de.arb │ │ ├── app_en.arb │ │ ├── app_es.arb │ │ ├── app_fr.arb │ │ ├── app_pl.arb │ │ ├── app_sw.arb │ │ └── app_ur.arb │ ├── main.dart │ └── router │ │ ├── general_router.dart │ │ ├── providers │ │ └── router_providers.dart │ │ ├── router.dart │ │ ├── routes.dart │ │ ├── shell_routers │ │ ├── activities_shell_router.dart │ │ ├── chat_shell_router.dart │ │ ├── home_shell_router.dart │ │ ├── search_shell_router.dart │ │ └── update_shell_router.dart │ │ └── utils.dart ├── linux │ ├── .gitignore │ ├── CMakeLists.txt │ ├── flutter │ │ └── CMakeLists.txt │ ├── icons │ │ └── app_icon.png │ ├── main.cc │ ├── my_application.cc │ ├── my_application.h │ └── packaging │ │ ├── aur │ │ ├── .SRCINFO │ │ └── PKGBUILD │ │ └── global.acter.a3.desktop ├── macos │ ├── .gitignore │ ├── Flutter │ │ ├── Flutter-Debug.xcconfig │ │ └── Flutter-Release.xcconfig │ ├── Podfile │ ├── Podfile.lock │ ├── Runner.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ └── xcshareddata │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ └── swiftpm │ │ │ │ └── Package.resolved │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── Runner.xcscheme │ ├── Runner.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcsharedata │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── swiftpm │ │ │ └── Package.resolved │ ├── Runner │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets │ │ │ └── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── app_icon_1024.png │ │ │ │ ├── app_icon_128.png │ │ │ │ ├── app_icon_16.png │ │ │ │ ├── app_icon_256.png │ │ │ │ ├── app_icon_32.png │ │ │ │ ├── app_icon_512.png │ │ │ │ └── app_icon_64.png │ │ ├── Base.lproj │ │ │ └── MainMenu.xib │ │ ├── Configs │ │ │ ├── AppInfo.xcconfig │ │ │ ├── Debug.xcconfig │ │ │ ├── Release.xcconfig │ │ │ └── Warnings.xcconfig │ │ ├── DebugProfile.entitlements │ │ ├── Info.plist │ │ ├── MainFlutterWindow.swift │ │ └── Release.entitlements │ └── codesign-release.sh ├── pubspec.lock ├── pubspec.yaml ├── test │ ├── .gitignore │ ├── common │ │ ├── mock_data │ │ │ ├── mock_avatar_info.dart │ │ │ └── mock_user_id.dart │ │ ├── option_extension_test.dart │ │ ├── providers │ │ │ ├── client_providers_test.dart │ │ │ └── space_providers_test.dart │ │ ├── toolkit │ │ │ └── widgets │ │ │ │ ├── acter_selection_area_test.dart │ │ │ │ └── pulsating_icon_test.dart │ │ ├── utils │ │ │ └── utils_test.dart │ │ └── widgets │ │ │ ├── acter_icon_picker_widget_test.dart │ │ │ ├── acter_icon_widget_test.dart │ │ │ ├── acter_search_widget_test.dart │ │ │ ├── has_space_permission_test.dart │ │ │ └── typing_indicator_test.dart │ ├── features │ │ ├── activities │ │ │ └── widgets │ │ │ │ └── invitation_section │ │ │ │ └── invitation_section_widget_test.dart │ │ ├── activity │ │ │ ├── activity_item_widget_test.dart │ │ │ ├── activity_section_item_widget_test.dart │ │ │ ├── invitation_item_widget_test.dart │ │ │ ├── item_widgets │ │ │ │ ├── activity_attachment_item_widget_test.dart │ │ │ │ ├── activity_comment_item_widget_test.dart │ │ │ │ ├── activity_event_item_widget_test.dart │ │ │ │ ├── activity_membership_item_widget_test.dart │ │ │ │ ├── activity_reaction_item_widget_test.dart │ │ │ │ ├── activity_reference_item_widget_test.dart │ │ │ │ ├── activity_space_item_widget_test.dart │ │ │ │ └── activity_task_item_widget_test.dart │ │ │ ├── mock_data │ │ │ │ ├── mock_activity.dart │ │ │ │ ├── mock_activity_object.dart │ │ │ │ ├── mock_membership_change.dart │ │ │ │ ├── mock_msg_content.dart │ │ │ │ ├── mock_ref_details.dart │ │ │ │ ├── mock_room_avatar_change.dart │ │ │ │ ├── mock_room_name_change.dart │ │ │ │ └── mock_room_topic_change.dart │ │ │ ├── providers │ │ │ │ ├── activity_dates_providers_test.dart │ │ │ │ └── room_ids_by_date_provider_test.dart │ │ │ └── store_encryption_widgets │ │ │ │ ├── remindme_key_dialog_test.dart │ │ │ │ ├── show_recovery_key_widget_test.dart │ │ │ │ └── store_the_key_securely_widget_test.dart │ │ ├── analytics │ │ │ └── pages │ │ │ │ └── analytics_opt_in_page_test.dart │ │ ├── attachments │ │ │ ├── golden_attachment_selection_modal_test.dart │ │ │ └── goldens │ │ │ │ └── attachment_selection_modal.png │ │ ├── auth │ │ │ ├── onboarding │ │ │ │ ├── customization_page_test.dart │ │ │ │ ├── encryption_backup_page_test.dart │ │ │ │ ├── onboarding_encryption_key_backup_page_test.dart │ │ │ │ ├── onboarding_page_test.dart │ │ │ │ ├── onboarding_space_creation_page_test.dart │ │ │ │ ├── recommended_spaces_page_test.dart │ │ │ │ └── redeem_invitations_page_test.dart │ │ │ ├── pages │ │ │ │ ├── login_page_test.dart │ │ │ │ └── register_page_test.dart │ │ │ └── widgets │ │ │ │ ├── create_new_space_widget_test.dart │ │ │ │ ├── encryption_backup_widget_test.dart │ │ │ │ ├── expect_descryption_failures_widget_test.dart │ │ │ │ └── missing_encryption_backup_key_widget_test.dart │ │ ├── backup │ │ │ ├── backup_page_test.dart │ │ │ └── backup_state_widget_test.dart │ │ ├── bookmarks │ │ │ ├── bookmark_action_test.dart │ │ │ └── bookmarks_are_first_provider_test.dart │ │ ├── calendar_sync │ │ │ ├── calendar_sync_permission_page_test.dart │ │ │ └── calendar_sync_test.dart │ │ ├── chat │ │ │ ├── chat_listing_search_test.dart │ │ │ ├── custom_input_test.dart │ │ │ └── messages │ │ │ │ ├── chat_message_test.dart │ │ │ │ └── image_message_test.dart │ │ ├── chat_ng │ │ │ ├── chat_room_page │ │ │ │ ├── golden_chat_room_page_test.dart │ │ │ │ └── goldens_images │ │ │ │ │ └── chat_room_page.png │ │ │ ├── dialogs │ │ │ │ ├── goldens │ │ │ │ │ ├── message_actions_other_long.png │ │ │ │ │ ├── message_actions_other_medium.png │ │ │ │ │ ├── message_actions_other_short.png │ │ │ │ │ ├── message_actions_own_long.png │ │ │ │ │ ├── message_actions_own_medium.png │ │ │ │ │ └── message_actions_own_short.png │ │ │ │ └── message_actions_test.dart │ │ │ ├── diff_applier_test.dart │ │ │ ├── messages │ │ │ │ └── chat_message_test.dart │ │ │ ├── reactions │ │ │ │ └── reactions_test.dart │ │ │ ├── room_list │ │ │ │ └── chatng_listing_search_test.dart │ │ │ ├── utils_test.dart │ │ │ └── widgets │ │ │ │ ├── chat_bubble_test.dart │ │ │ │ ├── chat_editor │ │ │ │ ├── chat_editor_mentions_test.dart │ │ │ │ ├── chat_editor_test.dart │ │ │ │ ├── editor_height-auto-scroll_test.dart │ │ │ │ └── goldens │ │ │ │ │ ├── editor_default_height.png │ │ │ │ │ ├── editor_long_text_without_breaks.png │ │ │ │ │ ├── editor_multiline_height.png │ │ │ │ │ ├── editor_multiline_with_keyboard.png │ │ │ │ │ └── editor_with_keyboard_visible.png │ │ │ │ ├── chat_event_item_test.dart │ │ │ │ ├── chat_item │ │ │ │ ├── bookmark_icon_widget_test.dart │ │ │ │ ├── display_name_widget_test.dart │ │ │ │ ├── goldens │ │ │ │ │ ├── typing_indicator_test_long_display_name.png │ │ │ │ │ ├── typing_indicator_visible_on_selection.png │ │ │ │ │ └── unread_counter_visible_on_selection.png │ │ │ │ ├── last_message_time_widget_test.dart │ │ │ │ ├── last_message_widget_test.dart │ │ │ │ ├── last_message_widgets │ │ │ │ │ ├── golden_profile_changes_message_event_test.dart │ │ │ │ │ ├── golden_room_message_event_widget_test.dart │ │ │ │ │ ├── golden_text_and_media_message_event_test.dart │ │ │ │ │ ├── goldens │ │ │ │ │ │ ├── profile_changes_message_event.png │ │ │ │ │ │ ├── room_message_event_widget.png │ │ │ │ │ │ └── text_and_media_message_event.png │ │ │ │ │ ├── profile_changes_event_widget_test.dart │ │ │ │ │ └── room_membership_event_widget_test.dart │ │ │ │ ├── mute_icon_widget_test.dart │ │ │ │ ├── selected_chat_item_test.dart │ │ │ │ ├── selected_chat_typing_indicator_test.dart │ │ │ │ ├── typing_indicator_test.dart │ │ │ │ └── unread_count_widget_test.dart │ │ │ │ ├── chat_messages_list_test.dart │ │ │ │ ├── chat_room │ │ │ │ ├── app_bar_widget_test.dart │ │ │ │ └── chat_event_messages │ │ │ │ │ ├── golden_chat_event_code_message_event_test.dart │ │ │ │ │ ├── golden_chat_event_link_message_event_test.dart │ │ │ │ │ ├── golden_chat_event_reactions_message_event_dm_chat_test.dart │ │ │ │ │ ├── golden_chat_event_reactions_message_event_test.dart │ │ │ │ │ ├── golden_chat_event_reply_message_event_test.dart │ │ │ │ │ ├── golden_chat_event_reply_with_emojis_only_test.dart │ │ │ │ │ ├── golden_chat_event_user_mention_message_event_test.dart │ │ │ │ │ ├── goldens_images │ │ │ │ │ ├── chat_event_autolink_message_event.png │ │ │ │ │ ├── chat_event_autolink_message_event_html_next.png │ │ │ │ │ ├── chat_event_code_message_event.png │ │ │ │ │ ├── chat_event_code_message_event_html_next.png │ │ │ │ │ ├── chat_event_link_message_event.png │ │ │ │ │ ├── chat_event_link_message_event_html_next.png │ │ │ │ │ ├── chat_event_reactions_message_event.png │ │ │ │ │ ├── chat_event_reactions_message_event_dm_chat.png │ │ │ │ │ ├── chat_event_reactions_message_event_dm_chat_html_next.png │ │ │ │ │ ├── chat_event_reactions_message_event_html_next.png │ │ │ │ │ ├── chat_event_reactions_message_event_legacy_html.png │ │ │ │ │ ├── chat_event_reply_message_event.png │ │ │ │ │ ├── chat_event_reply_message_event_html_next.png │ │ │ │ │ ├── chat_event_reply_with_emoji_only_html_next.png │ │ │ │ │ ├── chat_event_reply_with_emoji_only_legacy_html.png │ │ │ │ │ ├── chat_event_user_mention_message_event.png │ │ │ │ │ └── chat_event_user_mention_message_event_html_next.png │ │ │ │ │ └── replied_to_preview_test.dart │ │ │ │ ├── chat_typing_indicator_test.dart │ │ │ │ ├── message_event_item_sending_state_test.dart │ │ │ │ ├── message_timestamp_test.dart │ │ │ │ ├── read_receipts_widget_test.dart │ │ │ │ └── sending_state_widget_test.dart │ │ ├── comments │ │ │ ├── add_comment_test.dart │ │ │ ├── comment_item_test.dart │ │ │ ├── comment_list_test.dart │ │ │ ├── mock_data │ │ │ │ ├── mock_comment.dart │ │ │ │ ├── mock_comments_manager.dart │ │ │ │ └── mock_message_content.dart │ │ │ └── mock_providers │ │ │ │ └── comment_mock_providers.dart │ │ ├── deep_linking │ │ │ └── parse_acter_uri_test.dart │ │ ├── desktop_setup │ │ │ ├── desktop_setup_page_test.dart │ │ │ └── mocks │ │ │ │ └── desktop_setup_mocks.dart │ │ ├── events │ │ │ ├── error_pages_test.dart │ │ │ ├── event_item_test.dart │ │ │ ├── event_list_widget_test.dart │ │ │ └── event_providers_test.dart │ │ ├── general │ │ │ └── url_validation_test.dart │ │ ├── home │ │ │ └── my_spaces_section_test.dart │ │ ├── invite_members │ │ │ ├── direct_invite_test.dart │ │ │ ├── invite_code_ui_test.dart │ │ │ ├── invite_individual_users_test.dart │ │ │ ├── invite_page_test.dart │ │ │ ├── providers │ │ │ │ └── other_spaces_for_invite_members_test.dart │ │ │ └── share_invite_code_test.dart │ │ ├── link_room │ │ │ ├── link_room_page_test.dart │ │ │ └── link_room_trailing_test.dart │ │ ├── notifications │ │ │ └── notification_permission_page_test.dart │ │ ├── pins │ │ │ ├── error_pages_test.dart │ │ │ ├── pin_item_test.dart │ │ │ └── pin_list_widget_test.dart │ │ ├── read_receipts │ │ │ └── read_widget_test.dart │ │ ├── room │ │ │ ├── actions │ │ │ │ └── join_room_test.dart │ │ │ ├── providers │ │ │ │ └── room_providers_test.dart │ │ │ ├── room_avatar_builder_widget_test.dart │ │ │ ├── room_card_widget_test.dart │ │ │ ├── room_preview_widget_test.dart │ │ │ ├── room_profile_header_widget_test.dart │ │ │ └── room_with_profile_card_widget_test.dart │ │ ├── search │ │ │ └── chat_list_widget_test.dart │ │ ├── space │ │ │ ├── pages │ │ │ │ └── space_details_page_test.dart │ │ │ └── widgets │ │ │ │ └── space_sections │ │ │ │ └── about_section_test.dart │ │ ├── spaces │ │ │ ├── actions │ │ │ │ └── create_space_test.dart │ │ │ ├── other_chats_section_test.dart │ │ │ ├── other_spaces_section_test.dart │ │ │ ├── provider │ │ │ │ ├── space_hierarchy_providers_test.dart │ │ │ │ └── space_navabar_provider_test.dart │ │ │ ├── search_provider_test.dart │ │ │ ├── space_section_calculator_tests.dart │ │ │ ├── spacechats_test.dart │ │ │ ├── subspaces_test.dart │ │ │ ├── suggested_chats_section_test.dart │ │ │ ├── suggested_spaces_section_test.dart │ │ │ ├── utils.dart │ │ │ └── widgets │ │ │ │ └── select_permission_test.dart │ │ ├── super_invites │ │ │ ├── create_super_invite_page_test.dart │ │ │ ├── invite_list_item_widget_test.dart │ │ │ ├── invite_list_widget_test.dart │ │ │ └── mock_data │ │ │ │ └── mock_super_invites.dart │ │ ├── tasks │ │ │ ├── actions │ │ │ │ ├── my_task_actions_test.dart │ │ │ │ └── sorted_tasks_test.dart │ │ │ ├── error_pages_test.dart │ │ │ ├── my_task_test.dart │ │ │ ├── pages │ │ │ │ └── my_tasks_page_test.dart │ │ │ ├── task_item_test.dart │ │ │ ├── task_list_item_card_test.dart │ │ │ └── tasks_adding_test.dart │ │ └── update │ │ │ ├── image_slide_widget_test.dart │ │ │ ├── news_editor_test.dart │ │ │ ├── post_to_page_test.dart │ │ │ ├── update_lists_test.dart │ │ │ └── video_slide_widget_test.dart │ ├── flutter_test_config.dart │ ├── helpers │ │ ├── error_helpers.dart │ │ ├── font_loader.dart │ │ ├── mock_a3sdk.dart │ │ ├── mock_app_settings.dart │ │ ├── mock_basics.dart │ │ ├── mock_bookmarks.dart │ │ ├── mock_chat_providers.dart │ │ ├── mock_client_provider.dart │ │ ├── mock_event_providers.dart │ │ ├── mock_go_router.dart │ │ ├── mock_image_provider.dart │ │ ├── mock_invites.dart │ │ ├── mock_membership.dart │ │ ├── mock_pins_providers.dart │ │ ├── mock_pref_notifier.dart │ │ ├── mock_preferences.dart │ │ ├── mock_read_receipt_providers.dart │ │ ├── mock_relations.dart │ │ ├── mock_room_providers.dart │ │ ├── mock_space_providers.dart │ │ ├── mock_tasks_providers.dart │ │ ├── mock_updates_providers.dart │ │ ├── room_test_wrapper.dart │ │ ├── shared_prefs.dart │ │ ├── test_util.dart │ │ ├── test_wrapper_widget.dart │ │ └── utils.dart │ ├── lib │ │ └── features │ │ │ └── labs │ │ │ └── providers │ │ │ └── labs_providers_test.dart │ └── toolkit │ │ ├── html │ │ ├── goldens │ │ │ ├── html_rendering_ng_accepts_renamed_objects.png │ │ │ ├── html_rendering_ng_calendar_event.png │ │ │ ├── html_rendering_ng_code_block_dart.png │ │ │ ├── html_rendering_ng_code_block_large.png │ │ │ ├── html_rendering_ng_many.png │ │ │ ├── html_rendering_ng_many_max_2_lines.png │ │ │ ├── html_rendering_ng_many_max_4_lines.png │ │ │ ├── html_rendering_ng_one_line_max_lines.png │ │ │ ├── html_rendering_ng_pin.png │ │ │ ├── html_rendering_ng_regular_autodetect_acter_pin.png │ │ │ ├── html_rendering_ng_regular_autodetect_acter_user.png │ │ │ ├── html_rendering_ng_regular_autodetect_calendar_event.png │ │ │ ├── html_rendering_ng_regular_autodetect_links.png │ │ │ ├── html_rendering_ng_regular_autodetect_links_custom_font.png │ │ │ ├── html_rendering_ng_regular_autodetect_matrix.png │ │ │ ├── html_rendering_ng_regular_autodetect_matrix_to.png │ │ │ ├── html_rendering_ng_regular_autodetect_title_only.png │ │ │ ├── html_rendering_ng_regular_links.png │ │ │ ├── html_rendering_ng_regular_links_custom_font.png │ │ │ ├── html_rendering_ng_text_line_breaks.png │ │ │ └── html_rendering_ng_title_only.png │ │ └── rendering_ng_test.dart │ │ └── html_editor │ │ └── html_editor_test.dart ├── web │ ├── favicon.png │ ├── icons │ │ ├── Icon-192.png │ │ ├── Icon-512.png │ │ ├── Icon-maskable-192.png │ │ └── Icon-maskable-512.png │ ├── index.html │ └── manifest.json └── windows │ ├── .gitignore │ ├── CMakeLists.txt │ ├── flutter │ └── CMakeLists.txt │ └── runner │ ├── CMakeLists.txt │ ├── Runner.rc │ ├── flutter_window.cpp │ ├── flutter_window.h │ ├── main.cpp │ ├── resource.h │ ├── resources │ └── app_icon.ico │ ├── runner.exe.manifest │ ├── utils.cpp │ ├── utils.h │ ├── win32_window.cpp │ └── win32_window.h ├── docs ├── .gitignore ├── api │ └── main │ │ └── .gitkeep ├── index.html └── static │ └── CNAME ├── native ├── acter │ ├── Cargo.toml │ ├── api.rsh │ ├── build.rs │ ├── cbindgen.toml │ ├── ffi_bindings_extra.dart │ ├── src │ │ ├── acter.udl │ │ ├── api.rs │ │ ├── api │ │ │ ├── account.rs │ │ │ ├── account │ │ │ │ └── three_pid.rs │ │ │ ├── activities.rs │ │ │ ├── attachments.rs │ │ │ ├── auth.rs │ │ │ ├── backup.rs │ │ │ ├── bookmarks.rs │ │ │ ├── calendar_events.rs │ │ │ ├── categories.rs │ │ │ ├── client.rs │ │ │ ├── client │ │ │ │ ├── models.rs │ │ │ │ ├── sync.rs │ │ │ │ └── url_preview.rs │ │ │ ├── comments.rs │ │ │ ├── common.rs │ │ │ ├── convo.rs │ │ │ ├── deep_linking.rs │ │ │ ├── device.rs │ │ │ ├── invitations │ │ │ │ ├── client.rs │ │ │ │ ├── manager.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── object_manager.rs │ │ │ │ └── room_invitation.rs │ │ │ ├── news.rs │ │ │ ├── pins.rs │ │ │ ├── profile.rs │ │ │ ├── push.rs │ │ │ ├── push │ │ │ │ ├── client.rs │ │ │ │ ├── notification_item.rs │ │ │ │ ├── notification_settings.rs │ │ │ │ └── pusher.rs │ │ │ ├── reactions.rs │ │ │ ├── read_receipts.rs │ │ │ ├── room.rs │ │ │ ├── room │ │ │ │ ├── account_data.rs │ │ │ │ ├── preview.rs │ │ │ │ └── subscription.rs │ │ │ ├── rsvp.rs │ │ │ ├── search.rs │ │ │ ├── settings.rs │ │ │ ├── settings │ │ │ │ ├── space.rs │ │ │ │ └── user.rs │ │ │ ├── spaces.rs │ │ │ ├── spaces │ │ │ │ └── categories.rs │ │ │ ├── stories.rs │ │ │ ├── super_invites.rs │ │ │ ├── tasks.rs │ │ │ ├── timeline │ │ │ │ ├── item.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── msg_content.rs │ │ │ │ ├── msg_draft.rs │ │ │ │ ├── room_event.rs │ │ │ │ └── stream.rs │ │ │ ├── typing.rs │ │ │ ├── utils.rs │ │ │ └── verification.rs │ │ ├── api_next │ │ │ ├── client.rs │ │ │ ├── error.rs │ │ │ ├── mod.rs │ │ │ ├── notification.rs │ │ │ └── support.rs │ │ ├── lib.rs │ │ ├── platform │ │ │ ├── android.rs │ │ │ ├── desktop.rs │ │ │ ├── ios.rs │ │ │ ├── mod.rs │ │ │ └── native.rs │ │ ├── templates │ │ │ └── onboarding.toml │ │ ├── testing.rs │ │ └── uniffi-bindgen.rs │ └── uniffi.toml ├── cli │ ├── Cargo.toml │ └── src │ │ ├── action.rs │ │ ├── action │ │ ├── execute.rs │ │ ├── history.rs │ │ ├── list.rs │ │ └── manage.rs │ │ ├── config.rs │ │ └── main.rs ├── core │ ├── Cargo.toml │ └── src │ │ ├── activities.rs │ │ ├── activities │ │ ├── object.rs │ │ └── status.rs │ │ ├── client.rs │ │ ├── error.rs │ │ ├── events.rs │ │ ├── events │ │ ├── attachments.rs │ │ ├── bookmarks.rs │ │ ├── calendar.rs │ │ ├── comments.rs │ │ ├── common.rs │ │ ├── common │ │ │ ├── categories.rs │ │ │ ├── color.rs │ │ │ ├── display.rs │ │ │ ├── labels.rs │ │ │ ├── object_reference.rs │ │ │ └── rendering.rs │ │ ├── explicit_invites.rs │ │ ├── news.rs │ │ ├── pins.rs │ │ ├── read_receipt.rs │ │ ├── room.rs │ │ ├── rsvp.rs │ │ ├── settings.rs │ │ ├── settings │ │ │ ├── space.rs │ │ │ └── user.rs │ │ ├── stories.rs │ │ ├── subscription.rs │ │ ├── tasks.rs │ │ └── three_pid.rs │ │ ├── executor.rs │ │ ├── lib.rs │ │ ├── models.rs │ │ ├── models │ │ ├── any.rs │ │ ├── attachments.rs │ │ ├── calendar.rs │ │ ├── calendar │ │ │ └── event.rs │ │ ├── capabilities.rs │ │ ├── comments.rs │ │ ├── common.rs │ │ ├── conversion.rs │ │ ├── execution.rs │ │ ├── invites.rs │ │ ├── meta.rs │ │ ├── news.rs │ │ ├── pins.rs │ │ ├── reactions.rs │ │ ├── read_receipts.rs │ │ ├── redaction.rs │ │ ├── rsvp.rs │ │ ├── status │ │ │ ├── membership.rs │ │ │ ├── mod.rs │ │ │ ├── profile.rs │ │ │ └── room_state.rs │ │ ├── stories.rs │ │ ├── tag.rs │ │ ├── tasks.rs │ │ ├── tasks │ │ │ ├── task.rs │ │ │ └── task_list.rs │ │ └── test.rs │ │ ├── push.rs │ │ ├── referencing.rs │ │ ├── share_link.rs │ │ ├── spaces.rs │ │ ├── spaces │ │ └── permissions.rs │ │ ├── statics.rs │ │ ├── store.rs │ │ ├── store │ │ └── index.rs │ │ ├── super_invites.rs │ │ ├── support.rs │ │ ├── templates.rs │ │ ├── templates │ │ ├── filters.rs │ │ ├── functions.rs │ │ └── values.rs │ │ └── util.rs ├── file-event-cache │ ├── Cargo.toml │ ├── Readme.md │ └── src │ │ ├── lib.rs │ │ └── queued.rs ├── media-cache-wrapper │ ├── Cargo.toml │ ├── Readme.md │ └── src │ │ ├── lib.rs │ │ └── queued.rs └── test │ ├── Cargo.toml │ └── src │ ├── lib.rs │ ├── tests.rs │ ├── tests │ ├── activities │ │ ├── attachments.rs │ │ ├── calendar.rs │ │ ├── comments.rs │ │ ├── likes.rs │ │ ├── mod.rs │ │ ├── policy_rule_room.rs │ │ ├── policy_rule_server.rs │ │ ├── policy_rule_user.rs │ │ ├── room_avatar.rs │ │ ├── room_create.rs │ │ ├── room_encryption.rs │ │ ├── room_guest_access.rs │ │ ├── room_history_visibility.rs │ │ ├── room_join_rules.rs │ │ ├── room_name.rs │ │ ├── room_pinned_events.rs │ │ ├── room_power_levels.rs │ │ ├── room_server_acl.rs │ │ ├── room_tombstone.rs │ │ ├── room_topic.rs │ │ ├── space.rs │ │ ├── space_child.rs │ │ ├── space_parent.rs │ │ ├── status.rs │ │ └── tasks.rs │ ├── attachment.rs │ ├── auth.rs │ ├── backup.rs │ ├── bookmarks.rs │ ├── calendar.rs │ ├── categories.rs │ ├── fixtures │ │ ├── PNG_transparency_demonstration_1.png │ │ ├── big_buck_bunny.mp4 │ │ └── kingfisher.jpg │ ├── formatted_body.rs │ ├── invitation.rs │ ├── media_msg │ │ ├── blurhash.rs │ │ ├── download.rs │ │ ├── mod.rs │ │ └── thumbnail.rs │ ├── msg_draft.rs │ ├── msg_edit.rs │ ├── news.rs │ ├── notifications │ │ ├── attachments.rs │ │ ├── comments.rs │ │ ├── event.rs │ │ ├── likes.rs │ │ ├── mod.rs │ │ ├── news.rs │ │ ├── pins.rs │ │ ├── references.rs │ │ └── tasks.rs │ ├── onboarding.rs │ ├── pins.rs │ ├── push.rs │ ├── reaction.rs │ ├── redact.rs │ ├── ref_details.rs │ ├── reply.rs │ ├── room │ │ ├── mod.rs │ │ ├── policy_rule_room.rs │ │ ├── policy_rule_server.rs │ │ ├── policy_rule_user.rs │ │ ├── room_avatar.rs │ │ ├── room_create.rs │ │ ├── room_encryption.rs │ │ ├── room_guest_access.rs │ │ ├── room_history_visibility.rs │ │ ├── room_join_rules.rs │ │ ├── room_name.rs │ │ ├── room_pinned_events.rs │ │ ├── room_power_levels.rs │ │ ├── room_server_acl.rs │ │ ├── room_tombstone.rs │ │ ├── room_topic.rs │ │ ├── space_child.rs │ │ ├── space_parent.rs │ │ └── user_settings.rs │ ├── room_updates.rs │ ├── rsvp.rs │ ├── spaces.rs │ ├── spaces │ │ └── upgrades.rs │ ├── stories.rs │ ├── super_invites.rs │ ├── sync.rs │ ├── tasks.rs │ ├── tasks │ │ └── invitations.rs │ ├── templates.rs │ ├── typing.rs │ ├── url_previews.rs │ └── verification.rs │ └── utils.rs ├── packages ├── acter_notifify │ ├── .gitignore │ ├── .metadata │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── analysis_options.yaml │ ├── lib │ │ ├── acter_notifify.dart │ │ ├── local.dart │ │ ├── matrix.dart │ │ ├── model │ │ │ └── push_styles.dart │ │ ├── ntfy.dart │ │ ├── platform │ │ │ ├── android.dart │ │ │ ├── darwin.dart │ │ │ ├── linux.dart │ │ │ └── windows.dart │ │ ├── processing │ │ │ ├── attachment.dart │ │ │ ├── comment.dart │ │ │ ├── description.dart │ │ │ ├── event.dart │ │ │ ├── object_creation.dart │ │ │ ├── object_invitation.dart │ │ │ ├── object_other_changes.dart │ │ │ ├── object_redaction.dart │ │ │ ├── reaction.dart │ │ │ ├── references.dart │ │ │ ├── task_item.dart │ │ │ ├── task_list.dart │ │ │ ├── title_change.dart │ │ │ └── utils.dart │ │ ├── push.dart │ │ └── util.dart │ ├── pubspec.yaml │ └── test │ │ ├── attachment_notification_test.dart │ │ ├── comment_notification_test.dart │ │ ├── description_change_notification_test.dart │ │ ├── event_notification_test.dart │ │ ├── invitations_notification_test.dart │ │ ├── message_format_test.dart │ │ ├── mock_data │ │ ├── mock_activity_object.dart │ │ ├── mock_notification_item.dart │ │ ├── mock_notification_sender.dart │ │ └── mock_object.dart │ │ ├── object_creation_notification_test.dart │ │ ├── object_other_changes_notification_test.dart │ │ ├── object_redaction_notification_test.dart │ │ ├── reaction_notification_test.dart │ │ ├── references_notification_test.dart │ │ ├── task_item_notification_test.dart │ │ ├── task_list_notification_test.dart │ │ └── title_change_notification_test.dart ├── acter_trigger_auto_complete │ ├── .gitignore │ ├── .metadata │ ├── CHANGELOG.md │ ├── LICENSE │ ├── analysis_options.yaml │ ├── example │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── android │ │ │ ├── .gitignore │ │ │ ├── app │ │ │ │ ├── build.gradle │ │ │ │ └── src │ │ │ │ │ ├── debug │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ ├── main │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ ├── kotlin │ │ │ │ │ │ └── com │ │ │ │ │ │ │ └── example │ │ │ │ │ │ │ └── example │ │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ │ └── res │ │ │ │ │ │ ├── drawable-v21 │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ ├── drawable │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── values-night │ │ │ │ │ │ └── styles.xml │ │ │ │ │ │ └── values │ │ │ │ │ │ └── styles.xml │ │ │ │ │ └── profile │ │ │ │ │ └── AndroidManifest.xml │ │ │ ├── build.gradle │ │ │ ├── gradle.properties │ │ │ ├── gradle │ │ │ │ └── wrapper │ │ │ │ │ └── gradle-wrapper.properties │ │ │ └── settings.gradle │ │ ├── ios │ │ │ ├── .gitignore │ │ │ ├── Flutter │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ ├── Debug.xcconfig │ │ │ │ └── Release.xcconfig │ │ │ ├── Podfile │ │ │ ├── Runner.xcodeproj │ │ │ │ ├── project.pbxproj │ │ │ │ ├── project.xcworkspace │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ │ └── xcshareddata │ │ │ │ │ └── xcschemes │ │ │ │ │ └── Runner.xcscheme │ │ │ ├── Runner.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ └── Runner │ │ │ │ ├── AppDelegate.swift │ │ │ │ ├── Assets.xcassets │ │ │ │ ├── AppIcon.appiconset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ │ │ └── LaunchImage.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── LaunchImage.png │ │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ │ └── README.md │ │ │ │ ├── Base.lproj │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ └── Main.storyboard │ │ │ │ ├── Info.plist │ │ │ │ └── Runner-Bridging-Header.h │ │ ├── lib │ │ │ ├── main.dart │ │ │ └── src │ │ │ │ ├── chat_message_list.dart │ │ │ │ ├── chat_message_text_field.dart │ │ │ │ ├── data.dart │ │ │ │ ├── models.dart │ │ │ │ └── options │ │ │ │ ├── emoji_autocomplete_options.dart │ │ │ │ ├── hashtag_autocomplete_options.dart │ │ │ │ ├── mention_autocomplete_options.dart │ │ │ │ └── options.dart │ │ ├── pubspec.lock │ │ └── pubspec.yaml │ ├── lib │ │ ├── acter_trigger_autocomplete.dart │ │ └── src │ │ │ ├── acter_trigger_autocomplete.dart │ │ │ ├── acter_trigger_autocomplete_controller.dart │ │ │ ├── autocomplete_query.dart │ │ │ └── autocomplete_trigger.dart │ ├── pubspec.yaml │ └── test │ │ ├── acter_trigger_autocomplete_test.dart │ │ └── autocomplete_trigger_test.dart ├── rust_sdk │ ├── .gitignore │ ├── .metadata │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── analysis_options.yaml │ ├── android │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── settings.gradle │ │ └── src │ │ │ └── main │ │ │ ├── .gitignore │ │ │ ├── AndroidManifest.xml │ │ │ └── kotlin │ │ │ └── global │ │ │ └── acter │ │ │ └── acter_flutter_sdk │ │ │ └── ActerFlutterSdkPlugin.kt │ ├── ios │ │ ├── .gitignore │ │ ├── Assets │ │ │ └── .gitkeep │ │ ├── Classes │ │ │ ├── ActerFlutterSdkPlugin.h │ │ │ ├── ActerFlutterSdkPlugin.m │ │ │ └── SwiftActerFlutterSdkPlugin.swift │ │ └── acter_flutter_sdk.podspec │ ├── lib │ │ ├── acter.dart │ │ ├── acter_flutter_sdk.dart │ │ ├── acter_flutter_sdk_ffi.dart │ │ ├── acter_flutter_sdk_method_channel.dart │ │ ├── acter_flutter_sdk_platform_interface.dart │ │ └── acter_flutter_sdk_web.dart │ ├── linux │ │ ├── CMakeLists.txt │ │ ├── acter_flutter_sdk_plugin.cc │ │ └── include │ │ │ └── acter_flutter_sdk │ │ │ └── acter_flutter_sdk_plugin.h │ ├── macos │ │ ├── Classes │ │ │ ├── ActerFlutterSdkPlugin.h │ │ │ └── ActerFlutterSdkPlugin.swift │ │ └── acter_flutter_sdk.podspec │ ├── pubspec.yaml │ ├── test │ │ ├── acter_flutter_sdk_method_channel_test.dart │ │ └── acter_flutter_sdk_test.dart │ └── windows │ │ ├── .gitignore │ │ ├── CMakeLists.txt │ │ ├── acter_flutter_sdk_plugin.cpp │ │ ├── acter_flutter_sdk_plugin.h │ │ ├── acter_flutter_sdk_plugin_c_api.cpp │ │ └── include │ │ └── acter_flutter_sdk │ │ ├── acter_flutter_sdk_plugin.h │ │ └── acter_flutter_sdk_plugin_c_api.h └── shake_detector │ ├── .github │ └── FUNDING.yml │ ├── .gitignore │ ├── .metadata │ ├── .vscode │ └── launch.json │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── analysis_options.yaml │ ├── example │ ├── .gitignore │ ├── .metadata │ ├── README.md │ ├── analysis_options.yaml │ ├── android │ │ ├── .gitignore │ │ ├── app │ │ │ ├── build.gradle │ │ │ └── src │ │ │ │ ├── debug │ │ │ │ └── AndroidManifest.xml │ │ │ │ ├── main │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── kotlin │ │ │ │ │ └── com │ │ │ │ │ │ └── example │ │ │ │ │ │ └── example │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ └── res │ │ │ │ │ ├── drawable-v21 │ │ │ │ │ └── launch_background.xml │ │ │ │ │ ├── drawable │ │ │ │ │ └── launch_background.xml │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── values-night │ │ │ │ │ └── styles.xml │ │ │ │ │ └── values │ │ │ │ │ └── styles.xml │ │ │ │ └── profile │ │ │ │ └── AndroidManifest.xml │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ └── gradle-wrapper.properties │ │ └── settings.gradle │ ├── ios │ │ ├── .gitignore │ │ ├── Flutter │ │ │ ├── AppFrameworkInfo.plist │ │ │ ├── Debug.xcconfig │ │ │ └── Release.xcconfig │ │ ├── Podfile │ │ ├── Podfile.lock │ │ ├── Runner.xcodeproj │ │ │ ├── project.pbxproj │ │ │ ├── project.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ └── xcshareddata │ │ │ │ └── xcschemes │ │ │ │ └── Runner.xcscheme │ │ ├── Runner.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ └── WorkspaceSettings.xcsettings │ │ ├── Runner │ │ │ ├── AppDelegate.swift │ │ │ ├── Assets.xcassets │ │ │ │ ├── AppIcon.appiconset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ │ │ └── LaunchImage.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── LaunchImage.png │ │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ │ └── README.md │ │ │ ├── Base.lproj │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ └── Main.storyboard │ │ │ ├── Info.plist │ │ │ └── Runner-Bridging-Header.h │ │ └── RunnerTests │ │ │ └── RunnerTests.swift │ ├── lib │ │ └── main.dart │ ├── pubspec.lock │ ├── pubspec.yaml │ └── test │ │ └── widget_test.dart │ ├── lib │ └── shake_detector.dart │ └── pubspec.yaml ├── rust-toolchain └── util ├── conv_test_man ├── .gitignore ├── .metadata ├── README.md ├── analysis_options.yaml ├── android │ ├── .gitignore │ ├── app │ │ ├── build.gradle │ │ └── src │ │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── kotlin │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── conv_test_man │ │ │ │ │ └── MainActivity.kt │ │ │ └── res │ │ │ │ ├── drawable-v21 │ │ │ │ └── launch_background.xml │ │ │ │ ├── drawable │ │ │ │ └── launch_background.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── values-night │ │ │ │ └── styles.xml │ │ │ │ └── values │ │ │ │ └── styles.xml │ │ │ └── profile │ │ │ └── AndroidManifest.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ └── settings.gradle ├── ios │ ├── .gitignore │ ├── Flutter │ │ ├── AppFrameworkInfo.plist │ │ ├── Debug.xcconfig │ │ └── Release.xcconfig │ ├── Podfile │ ├── Runner.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ └── WorkspaceSettings.xcsettings │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── Runner.xcscheme │ ├── Runner.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── WorkspaceSettings.xcsettings │ ├── Runner │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ │ └── LaunchImage.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── LaunchImage.png │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ └── README.md │ │ ├── Base.lproj │ │ │ ├── LaunchScreen.storyboard │ │ │ └── Main.storyboard │ │ ├── Info.plist │ │ └── Runner-Bridging-Header.h │ └── RunnerTests │ │ └── RunnerTests.swift ├── lib │ └── main.dart ├── linux │ ├── .gitignore │ ├── CMakeLists.txt │ ├── flutter │ │ ├── CMakeLists.txt │ │ ├── generated_plugin_registrant.cc │ │ ├── generated_plugin_registrant.h │ │ └── generated_plugins.cmake │ ├── main.cc │ ├── my_application.cc │ └── my_application.h ├── macos │ ├── .gitignore │ ├── Flutter │ │ ├── Flutter-Debug.xcconfig │ │ ├── Flutter-Release.xcconfig │ │ └── GeneratedPluginRegistrant.swift │ ├── Podfile │ ├── Runner.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ └── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── Runner.xcscheme │ ├── Runner.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ ├── Runner │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets │ │ │ └── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── app_icon_1024.png │ │ │ │ ├── app_icon_128.png │ │ │ │ ├── app_icon_16.png │ │ │ │ ├── app_icon_256.png │ │ │ │ ├── app_icon_32.png │ │ │ │ ├── app_icon_512.png │ │ │ │ └── app_icon_64.png │ │ ├── Base.lproj │ │ │ └── MainMenu.xib │ │ ├── Configs │ │ │ ├── AppInfo.xcconfig │ │ │ ├── Debug.xcconfig │ │ │ ├── Release.xcconfig │ │ │ └── Warnings.xcconfig │ │ ├── DebugProfile.entitlements │ │ ├── Info.plist │ │ ├── MainFlutterWindow.swift │ │ └── Release.entitlements │ └── RunnerTests │ │ └── RunnerTests.swift ├── pubspec.lock ├── pubspec.yaml ├── test │ └── widget_test.dart ├── web │ ├── favicon.png │ ├── icons │ │ ├── Icon-192.png │ │ ├── Icon-512.png │ │ ├── Icon-maskable-192.png │ │ └── Icon-maskable-512.png │ ├── index.html │ └── manifest.json └── windows │ ├── .gitignore │ ├── CMakeLists.txt │ ├── flutter │ ├── CMakeLists.txt │ ├── generated_plugin_registrant.cc │ ├── generated_plugin_registrant.h │ └── generated_plugins.cmake │ └── runner │ ├── CMakeLists.txt │ ├── Runner.rc │ ├── flutter_window.cpp │ ├── flutter_window.h │ ├── main.cpp │ ├── resource.h │ ├── resources │ └── app_icon.ico │ ├── runner.exe.manifest │ ├── utils.cpp │ ├── utils.h │ ├── win32_window.cpp │ └── win32_window.h ├── mr_minutes ├── Cargo.toml └── src │ └── main.rs ├── sari ├── Cargo.toml └── src │ ├── commands │ ├── build.rs │ └── mod.rs │ └── main.rs └── test_server ├── .config ├── acter-synapse-ci │ ├── Dockerfile │ └── ci-start.sh ├── nginx.conf └── rageshake.yml ├── .gitignore ├── Vagrantfile └── docker-compose.yml /.changes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/.changes/.gitkeep -------------------------------------------------------------------------------- /.config/nextest.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | slow-timeout = { period = "2min", terminate-after = 5 } -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | .github/assets/provision_profiles/** filter=git-crypt diff=git-crypt 2 | .github/assets/*.p12 filter=git-crypt diff=git-crypt 3 | -------------------------------------------------------------------------------- /.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ## Thanks 2 | 3 | for considering to contribute to acter. Highly appreciated! Before you continue please read the 4 | 5 | [![Contributors Guide Badge](https://img.shields.io/badge/Contributors%20Guide-blue?style=for-the-badge)](https://docs.acter.global/docs/contributing/how-to-contribute/) 6 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | ko_fi: acter 2 | -------------------------------------------------------------------------------- /.github/nextest-config.toml: -------------------------------------------------------------------------------- 1 | [profile.default] 2 | retries = 2 3 | slow-timeout = { period = "2min", terminate-after = 5 } -------------------------------------------------------------------------------- /.github/templates/failure-report-template.md.tmpl: -------------------------------------------------------------------------------- 1 | --- 2 | title: Failed to build {{ env.NAME }} for {{ env.TAG }}. 3 | assignees: gnunicorn 4 | labels: bug, build 5 | --- 6 | 7 | - [Failed Run]({{ env.FAILED_RUN_URL }}) 8 | - [Artifacts]({{ env.ARTIFACT_URL }}) 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | target 2 | .env.sh 3 | .vscode 4 | .idea 5 | .local 6 | .DS_Store 7 | app/firebase.json 8 | Changes.md 9 | nightly-changes.md 10 | packages/rust_sdk/**/libacter.a 11 | native/acter/src/api_generated.rs 12 | native/acter/bindings.h 13 | native/acter/bindings.dart 14 | .github/assets/git-crypt-key 15 | app/lib/config/env.g.dart 16 | app/.env.* 17 | app/coverage 18 | devtools_options.yaml -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/.gitmodules -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | - Fix crash when picking an Avatar or image on older devices 2 | - Suggested spaces and chats are preferably now shown on the overview of a space, if configured 3 | - [Fix] you can now suggest chat rooms you are already in as well 4 | - Unified the way chats and spaces are shown in various lists for a cleaner UI and improved layout 5 | - Spaces and Chats are now separated on the invites editing page for easier and cleaner access 6 | - Empty lines are now preserved and rendered in chats when composing room message text. 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/README.md: -------------------------------------------------------------------------------- 1 | # acter 2 | 3 | A new Flutter project. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) 13 | 14 | For help getting started with Flutter, view our 15 | [online documentation](https://flutter.dev/docs), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /app/analysis_options.yaml: -------------------------------------------------------------------------------- 1 | include: package:flutter_lints/flutter.yaml 2 | 3 | linter: 4 | rules: 5 | prefer_single_quotes: true 6 | always_declare_return_types: true 7 | always_use_package_imports: true 8 | file_names: false 9 | 10 | analyzer: 11 | exclude: 12 | - packages/** 13 | - "**.g.dart" 14 | - "**_ffi.dart" -------------------------------------------------------------------------------- /app/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | **/*.keystore 13 | **/*.jks 14 | *.hprof 15 | -------------------------------------------------------------------------------- /app/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/android/app/src/main/drawable-hdpi/logo_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/android/app/src/main/drawable-hdpi/logo_notification.png -------------------------------------------------------------------------------- /app/android/app/src/main/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/android/app/src/main/ic_launcher-playstore.png -------------------------------------------------------------------------------- /app/android/app/src/main/kotlin/global/acter/app/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package global.acter.app 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /app/android/app/src/main/logo_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/android/app/src/main/logo_notification.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/logo_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/android/app/src/main/res/drawable-hdpi/logo_notification.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/logo_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/android/app/src/main/res/drawable-mdpi/logo_notification.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/logo_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/android/app/src/main/res/drawable-xhdpi/logo_notification.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/logo_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/android/app/src/main/res/drawable-xxhdpi/logo_notification.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/logo_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/android/app/src/main/res/drawable-xxxhdpi/logo_notification.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable/app_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/android/app/src/main/res/drawable/app_icon.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /app/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/raw/keep.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/android/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | #9CCAFF 5 | -------------------------------------------------------------------------------- /app/android/app/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #1B2941 4 | -------------------------------------------------------------------------------- /app/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/android/build.gradle: -------------------------------------------------------------------------------- 1 | allprojects { 2 | repositories { 3 | google() 4 | mavenCentral() 5 | } 6 | } 7 | 8 | rootProject.buildDir = '../build' 9 | subprojects { 10 | project.buildDir = "${rootProject.buildDir}/${project.name}" 11 | } 12 | subprojects { 13 | project.evaluationDependsOn(':app') 14 | } 15 | 16 | tasks.register("clean", Delete) { 17 | delete rootProject.buildDir 18 | } -------------------------------------------------------------------------------- /app/android/gradle.properties: -------------------------------------------------------------------------------- 1 | android.useAndroidX=true 2 | android.enableJetifier=true 3 | org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError 4 | android.buildFeatures.buildConfig=true 5 | android.nonTransitiveRClass=false 6 | android.nonFinalResIds=false 7 | kotlin.incremental=true 8 | org.gradle.caching=true 9 | -------------------------------------------------------------------------------- /app/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /app/assets/fonts/Inter.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/assets/fonts/Inter.ttf -------------------------------------------------------------------------------- /app/assets/fonts/Noto-COLRv1.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/assets/fonts/Noto-COLRv1.ttf -------------------------------------------------------------------------------- /app/assets/fonts/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/assets/fonts/Roboto-Regular.ttf -------------------------------------------------------------------------------- /app/assets/fonts/RobotoMono-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/assets/fonts/RobotoMono-Regular.ttf -------------------------------------------------------------------------------- /app/assets/icon/ic_left_chat_bubble_corner.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/assets/icon/ic_right_chat_bubble_corner.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/assets/icon/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/assets/icon/logo.png -------------------------------------------------------------------------------- /app/assets/icon/logo_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/assets/icon/logo_foreground.png -------------------------------------------------------------------------------- /app/assets/icon/signal_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/assets/icon/signal_logo.png -------------------------------------------------------------------------------- /app/assets/icon/tray_icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/assets/icon/tray_icon.ico -------------------------------------------------------------------------------- /app/assets/icon/tray_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/assets/icon/tray_icon.png -------------------------------------------------------------------------------- /app/assets/images/chat_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/assets/images/chat_bg.png -------------------------------------------------------------------------------- /app/assets/images/comms_onboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/assets/images/comms_onboard.png -------------------------------------------------------------------------------- /app/assets/images/encryptionkey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/assets/images/encryptionkey.png -------------------------------------------------------------------------------- /app/assets/images/intro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/assets/images/intro.png -------------------------------------------------------------------------------- /app/assets/images/modularity_onboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/assets/images/modularity_onboard.png -------------------------------------------------------------------------------- /app/assets/images/onboarding-collaboration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/assets/images/onboarding-collaboration.png -------------------------------------------------------------------------------- /app/assets/images/onboarding-train-station.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/assets/images/onboarding-train-station.png -------------------------------------------------------------------------------- /app/assets/images/onboarding-welcome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/assets/images/onboarding-welcome.png -------------------------------------------------------------------------------- /app/assets/images/sendIcon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/assets/images/spaces_onboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/assets/images/spaces_onboard.png -------------------------------------------------------------------------------- /app/assets/images/update_onboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/assets/images/update_onboard.png -------------------------------------------------------------------------------- /app/assets/videos/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/assets/videos/.gitkeep -------------------------------------------------------------------------------- /app/build.yaml: -------------------------------------------------------------------------------- 1 | targets: 2 | $default: 3 | sources: 4 | - lib/** 5 | - pubspec.* 6 | - $package$ 7 | # Allows the code generator to target files outside of the lib folder 8 | - integration_test/**.dart 9 | -------------------------------------------------------------------------------- /app/devtools_options.yaml: -------------------------------------------------------------------------------- 1 | extensions: 2 | -------------------------------------------------------------------------------- /app/ios/ActerPushServiceExtension/ActerLogger.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ActerLogger.swift 3 | // ActerPushServiceExtension 4 | // 5 | // Created by Benjamin Kampmann on 03/10/2023. 6 | // 7 | import OSLog 8 | 9 | extension Logger { 10 | /// Using your bundle identifier is a great way to ensure a unique identifier. 11 | private static var subsystem = Bundle.main.bundleIdentifier! 12 | 13 | /// Logs the view cycles like a view that appeared. 14 | static let push = Logger(subsystem: subsystem, category: "process") 15 | } 16 | -------------------------------------------------------------------------------- /app/ios/ActerPushServiceExtension/ActerPushServiceExtension.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | aps-environment 6 | development 7 | com.apple.security.network.client 8 | 9 | keychain-access-groups 10 | 11 | $(AppIdentifierPrefix)global.acter.a3 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/ios/ActerPushServiceExtension/Constants.swift: -------------------------------------------------------------------------------- 1 | 2 | 3 | import Foundation 4 | 5 | enum NotificationConstants { 6 | enum UserInfoKey { 7 | static let roomIdentifier = "room_id" 8 | static let eventIdentifier = "event_id" 9 | static let deviceIdentifier = "device_id" 10 | static let unreadCount = "unread_count" 11 | static let pusherNotificationClientIdentifier = "pusher_notification_client_identifier" 12 | static let receiverIdentifier = "receiver_id" 13 | static let notificationIdentifier = "notification_identifier" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/ios/ActerPushServiceExtension/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSExtension 6 | 7 | NSExtensionPointIdentifier 8 | com.apple.usernotifications.service 9 | NSExtensionPrincipalClass 10 | $(PRODUCT_MODULE_NAME).NotificationService 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /app/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /app/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @main 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /app/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /app/ios/acterFFI/module.modulemap: -------------------------------------------------------------------------------- 1 | // This file was autogenerated by some hot garbage in the `uniffi` crate. 2 | // Trust me, you don't want to mess with it! 3 | module acterFFI { 4 | header "acterFFI.h" 5 | export * 6 | } -------------------------------------------------------------------------------- /app/l10n.yaml: -------------------------------------------------------------------------------- 1 | arb-dir: lib/l10n 2 | output-dir: lib/l10n/generated 3 | template-arb-file: app_en.arb 4 | output-localization-file: l10n.dart 5 | output-class: L10n 6 | preferred-supported-locales: ["en"] 7 | nullable-getter: false 8 | synthetic-package: false -------------------------------------------------------------------------------- /app/lib/common/animations/like_animation.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class LikeAnimation { 4 | static AnimationController? controller; 5 | static bool isCliked = false; 6 | static Set likedIndex = {}; 7 | 8 | static void run(int index) { 9 | likedIndex.add(index); 10 | isCliked = true; 11 | controller!.reset(); 12 | controller!.forward(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/lib/common/models/keys.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class LogoutDialogKeys { 4 | static const confirm = Key('logout-dialog-confirm'); 5 | static const cancel = Key('logout-dialog-cancel'); 6 | } 7 | -------------------------------------------------------------------------------- /app/lib/common/models/sync_state/sync_state.dart: -------------------------------------------------------------------------------- 1 | import 'package:freezed_annotation/freezed_annotation.dart'; 2 | import 'package:flutter/foundation.dart'; 3 | 4 | part 'sync_state.freezed.dart'; 5 | 6 | @freezed 7 | class SyncState with _$SyncState { 8 | const factory SyncState({ 9 | required bool initialSync, 10 | String? errorMsg, 11 | int? countDown, 12 | int? nextRetry, 13 | }) = _NewSyncState; 14 | } 15 | -------------------------------------------------------------------------------- /app/lib/common/models/types.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | typedef MemberInfo = ({String userId, String roomId}); 4 | typedef ChatMessageInfo = ({String messageId, String roomId}); 5 | typedef RoomQuery = ({String roomId, String query}); 6 | 7 | enum AttachmentType { camera, image, audio, video, location, file, link } 8 | 9 | typedef AttachmentInfo = ({AttachmentType type, File file}); 10 | 11 | enum UrgencyBadge { urgent, important, unread, read, none } 12 | -------------------------------------------------------------------------------- /app/lib/common/providers/app_state_provider.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/widgets.dart'; 2 | import 'package:flutter_riverpod/flutter_riverpod.dart'; 3 | 4 | final appStateProvider = StateProvider( 5 | (ref) => AppLifecycleState.resumed, 6 | ); 7 | 8 | final isAppInForeground = StateProvider( 9 | (ref) => 10 | ref.watch(appStateProvider) == 11 | AppLifecycleState.resumed, // this means we are running 12 | ); 13 | -------------------------------------------------------------------------------- /app/lib/common/providers/reactions_providers.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter/common/providers/notifiers/reactions_notifiers.dart'; 2 | import 'package:acter_flutter_sdk/acter_flutter_sdk_ffi.dart'; 3 | import 'package:riverpod/riverpod.dart'; 4 | 5 | /// Provider the profile data of a the given space, keeps up to date with underlying client 6 | final reactionManagerProvider = NotifierProvider.family< 7 | ReactionManagerNotifier, 8 | ReactionManager, 9 | ReactionManager 10 | >(() => ReactionManagerNotifier()); 11 | -------------------------------------------------------------------------------- /app/lib/common/providers/sdk_provider.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter_flutter_sdk/acter_flutter_sdk.dart'; 2 | import 'package:riverpod/riverpod.dart'; 3 | 4 | final sdkProvider = FutureProvider((ref) async { 5 | return await ActerSdk.instance; 6 | }); 7 | -------------------------------------------------------------------------------- /app/lib/common/themes/components/bottom_sheet_theme.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter/common/themes/colors/color_scheme.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | var bottomSheetTheme = BottomSheetThemeData( 5 | backgroundColor: surfaceColor, 6 | shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), 7 | ); 8 | -------------------------------------------------------------------------------- /app/lib/common/themes/components/card_theme.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter/common/themes/colors/color_scheme.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | var cardTheme = CardTheme( 5 | color: surfaceColor, 6 | elevation: 0, 7 | margin: const EdgeInsets.symmetric(horizontal: 15, vertical: 8), 8 | ); 9 | -------------------------------------------------------------------------------- /app/lib/common/themes/components/dialog_theme.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter/common/themes/colors/color_scheme.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | var dialogTheme = DialogTheme( 5 | iconColor: const Color(0xFF67A24A), 6 | backgroundColor: surfaceColor, 7 | elevation: 0, 8 | shape: RoundedRectangleBorder( 9 | side: BorderSide.none, 10 | borderRadius: BorderRadius.circular(6), 11 | ), 12 | ); 13 | -------------------------------------------------------------------------------- /app/lib/common/themes/components/divider_theme.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | var dividerTheme = const DividerThemeData( 4 | indent: 75, 5 | endIndent: 15, 6 | thickness: 0.5, 7 | ); 8 | -------------------------------------------------------------------------------- /app/lib/common/themes/components/list_tile_Theme.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | var listTileTheme = const ListTileThemeData( 4 | contentPadding: EdgeInsets.symmetric(horizontal: 15, vertical: 5), 5 | ); 6 | -------------------------------------------------------------------------------- /app/lib/common/themes/components/progress_indicator_theme.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | var progressIndicatorTheme = const ProgressIndicatorThemeData( 4 | color: Color(0xffFF8E00), 5 | circularTrackColor: Colors.transparent, 6 | ); 7 | -------------------------------------------------------------------------------- /app/lib/common/toolkit/buttons/primary_action_button.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | /// ActionButton for primary actions 4 | /// 5 | /// This is an ElevatedButton using the primary-colors from the contextual theme 6 | /// to create a button that indicates a primary action. There should only ever 7 | /// be one primary action on a page. All input is as for [ElevatedButton]. 8 | typedef ActerPrimaryActionButton = ElevatedButton; 9 | -------------------------------------------------------------------------------- /app/lib/common/toolkit/html_editor/mentions/models/mention_attributes.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter/common/toolkit/html_editor/mentions/models/mention_type.dart'; 2 | 3 | class MentionAttributes { 4 | final String mentionId; 5 | final String? displayName; 6 | final MentionType type; 7 | 8 | const MentionAttributes({ 9 | required this.mentionId, 10 | required this.type, 11 | this.displayName, 12 | }); 13 | } 14 | -------------------------------------------------------------------------------- /app/lib/common/toolkit/html_editor/mentions/models/mention_type.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter/common/toolkit/html_editor/services/constants.dart'; 2 | 3 | enum MentionType { 4 | user, 5 | room; 6 | 7 | static String toStr(MentionType type) => switch (type) { 8 | MentionType.user => userMentionChar, 9 | MentionType.room => roomMentionChar, 10 | }; 11 | static MentionType fromStr(String str) => switch (str) { 12 | userMentionChar => MentionType.user, 13 | roomMentionChar => MentionType.room, 14 | _ => throw UnsupportedError('invalid string'), 15 | }; 16 | } 17 | -------------------------------------------------------------------------------- /app/lib/common/toolkit/html_editor/services/constants.dart: -------------------------------------------------------------------------------- 1 | const String userMentionChar = '@'; 2 | const String roomMentionChar = '#'; 3 | const userMentionMarker = '‖'; 4 | final userMentionRegExp = RegExp( 5 | r'\[@([^\]]+)\]\(https:\/\/matrix\.to\/#\/(@[^)]+)\)', 6 | ); 7 | final userMentionLinkRegExp = RegExp( 8 | r'https://matrix.to/#/(?@.+):(?.+)', 9 | ); 10 | -------------------------------------------------------------------------------- /app/lib/common/toolkit/skeletons/room_card_skeleton.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:skeletonizer/skeletonizer.dart'; 3 | 4 | class RoomCardSkeleton extends StatelessWidget { 5 | const RoomCardSkeleton({super.key}); 6 | 7 | @override 8 | Widget build(BuildContext context) { 9 | return Skeletonizer( 10 | child: Card( 11 | margin: const EdgeInsets.all(16), 12 | child: ListTile( 13 | leading: Bone.square(size: 48), 14 | title: Text('Room Card Skeleton'), 15 | ), 16 | ), 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/lib/common/toolkit/widgets/acter_selection_area.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ActerSelectionArea extends StatelessWidget { 4 | final Widget child; 5 | const ActerSelectionArea({super.key, required this.child}); 6 | 7 | @override 8 | Widget build(BuildContext context) { 9 | return TextSelectionTheme( 10 | data: TextSelectionThemeData( 11 | selectionColor: Theme.of( 12 | context, 13 | ).colorScheme.secondary.withValues(alpha: 0.3), 14 | ), 15 | child: SelectionArea(child: child), 16 | ); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/lib/common/tutorial_dialogs/show_tutorials.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:tutorial_coach_mark/tutorial_coach_mark.dart'; 3 | 4 | void showTutorials({ 5 | required BuildContext context, 6 | required List targets, 7 | Function()? onFinish, 8 | Function(TargetFocus)? onClickTarget, 9 | bool Function()? onSkip, 10 | }) { 11 | TutorialCoachMark( 12 | targets: targets, 13 | onFinish: onFinish, 14 | onClickTarget: onClickTarget, 15 | onSkip: onSkip, 16 | alignSkip: Alignment.topRight, 17 | ).show(context: context); 18 | } 19 | -------------------------------------------------------------------------------- /app/lib/common/utils/device.dart: -------------------------------------------------------------------------------- 1 | import 'package:device_info_plus/device_info_plus.dart'; 2 | import 'dart:io'; 3 | 4 | final DeviceInfoPlugin deviceInfo = DeviceInfoPlugin(); 5 | 6 | Future isRealPhone() async { 7 | if (Platform.isAndroid) { 8 | final androidInfo = await deviceInfo.androidInfo; 9 | return androidInfo.isPhysicalDevice; 10 | } else if (Platform.isIOS) { 11 | final iosInfo = await deviceInfo.iosInfo; 12 | return iosInfo.isPhysicalDevice; 13 | } 14 | return false; 15 | } 16 | -------------------------------------------------------------------------------- /app/lib/common/widgets/acter_icon_picker/model/color_data.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | List iconPickerColors = [ 4 | Colors.grey, 5 | Colors.greenAccent, 6 | Colors.redAccent, 7 | Colors.lightBlueAccent, 8 | Colors.orangeAccent, 9 | Colors.amberAccent, 10 | Colors.deepOrangeAccent, 11 | Colors.lightGreenAccent, 12 | Colors.tealAccent, 13 | Colors.purpleAccent, 14 | Colors.indigoAccent, 15 | Colors.pinkAccent, 16 | ]; 17 | -------------------------------------------------------------------------------- /app/lib/common/widgets/centered_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | const double maxWidth = 750; 4 | 5 | class CenteredPage extends StatelessWidget { 6 | final Widget child; 7 | const CenteredPage({super.key, required this.child}); 8 | 9 | @override 10 | Widget build(BuildContext context) { 11 | return Center( 12 | child: ConstrainedBox( 13 | constraints: const BoxConstraints(maxWidth: maxWidth), 14 | child: child, 15 | ), 16 | ); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/lib/common/widgets/no_internet.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_easyloading/flutter_easyloading.dart'; 2 | import 'package:acter/l10n/generated/l10n.dart'; 3 | 4 | void showNoInternetNotification(L10n lang) { 5 | EasyLoading.showToast(lang.limitedInternConnection); 6 | } 7 | -------------------------------------------------------------------------------- /app/lib/features/analytics/actions/telemetry_analytics.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter/features/analytics/pages/analytics_opt_in_page.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | /// Internal function to handle analytics opt-in 5 | Future showAnalyticsOptIn(BuildContext context) async { 6 | if (context.mounted) { 7 | await showDialog( 8 | context: context, 9 | barrierDismissible: false, 10 | builder: (BuildContext context) { 11 | return Dialog.fullscreen(child: const AnalyticsOptInWidget()); 12 | }, 13 | ); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/lib/features/auth/providers/auth_providers.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter/features/auth/providers/notifiers/auth_notifier.dart'; 2 | import 'package:riverpod/riverpod.dart'; 3 | 4 | final authLoadingStateProvider = Provider( 5 | (ref) => ref.watch(authStateProvider), 6 | ); 7 | 8 | final authStateProvider = NotifierProvider( 9 | () => AuthNotifier(), 10 | ); 11 | -------------------------------------------------------------------------------- /app/lib/features/auth/widgets/logo_widget.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_svg/flutter_svg.dart'; 3 | 4 | class LogoWidget extends StatelessWidget { 5 | final double height; 6 | final double width; 7 | 8 | const LogoWidget({super.key, this.height = 200, this.width = 200}); 9 | 10 | @override 11 | Widget build(BuildContext context) { 12 | return SvgPicture.asset( 13 | 'assets/icon/logo_foreground.svg', 14 | height: height, 15 | width: width, 16 | ); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/lib/features/backups/types.dart: -------------------------------------------------------------------------------- 1 | enum RecoveryState { incomplete, enabled, disabled, unknown } 2 | 3 | RecoveryState stringToState(String s) { 4 | return switch (s) { 5 | 'incomplete' => RecoveryState.incomplete, 6 | 'enabled' => RecoveryState.enabled, 7 | 'disabled' => RecoveryState.disabled, 8 | _ => RecoveryState.unknown, 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /app/lib/features/bug_report/providers/bug_report_providers.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter/config/env.g.dart'; 2 | import 'package:riverpod/riverpod.dart'; 3 | 4 | // Loading Providers 5 | final bugReporterLoadingProvider = StateProvider((ref) => false); 6 | 7 | const isBugReportingEnabled = Env.rageshakeUrl != ''; 8 | -------------------------------------------------------------------------------- /app/lib/features/calendar_sync/providers/calendar_sync_active_provider.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter/common/providers/notifiers/client_pref_notifier.dart'; 2 | 3 | final isCalendarSyncActiveProvider = createAsyncPrefProvider( 4 | prefKey: 'calendarSync', 5 | defaultValue: true, 6 | ); 7 | -------------------------------------------------------------------------------- /app/lib/features/categories/model/CategoryModelLocal.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter/common/widgets/acter_icon_picker/model/acter_icons.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | class CategoryModelLocal { 5 | final String? title; 6 | final Color? color; 7 | final ActerIcon? icon; 8 | final List entries; 9 | final bool isUncategorized; 10 | 11 | const CategoryModelLocal({ 12 | this.title, 13 | this.color, 14 | this.icon, 15 | required this.entries, 16 | this.isUncategorized = false, 17 | }); 18 | } 19 | -------------------------------------------------------------------------------- /app/lib/features/chat/pages/chat_select_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_riverpod/flutter_riverpod.dart'; 3 | import 'package:acter/l10n/generated/l10n.dart'; 4 | 5 | class ChatSelectPage extends ConsumerWidget { 6 | const ChatSelectPage({super.key}); 7 | 8 | @override 9 | Widget build(BuildContext context, WidgetRef ref) { 10 | return Center(child: Text(L10n.of(context).selectAnyRoomToSeeIt)); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/lib/features/chat/providers/create_chat_providers.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter_flutter_sdk/acter_flutter_sdk_ffi.dart' as ffi; 2 | import 'package:riverpod/riverpod.dart'; 3 | 4 | /// saves selected users from search result 5 | final createChatSelectedUsersProvider = StateProvider>( 6 | (ref) => [], 7 | ); 8 | -------------------------------------------------------------------------------- /app/lib/features/chat_ng/actions/copy_message_action.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter/services.dart'; 3 | import 'package:flutter_easyloading/flutter_easyloading.dart'; 4 | import 'package:acter/l10n/generated/l10n.dart'; 5 | 6 | Future copyMessageAction(BuildContext context, String body) async { 7 | String msg = body.trim(); 8 | await Clipboard.setData(ClipboardData(text: msg)); 9 | if (context.mounted) { 10 | EasyLoading.showToast(L10n.of(context).messageCopiedToClipboard); 11 | Navigator.pop(context); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/lib/features/chat_ng/globals.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | final chatBucket = PageStorageBucket(); 4 | // global key for determining build context of the editor 5 | final chatEditorKey = GlobalKey(); 6 | // global key for determining build context of the chat room 7 | final chatRoomKey = GlobalKey(); 8 | -------------------------------------------------------------------------------- /app/lib/features/chat_ng/pages/chat_select_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_riverpod/flutter_riverpod.dart'; 3 | import 'package:acter/l10n/generated/l10n.dart'; 4 | 5 | class ChatNgSelectPage extends ConsumerWidget { 6 | const ChatNgSelectPage({super.key}); 7 | 8 | @override 9 | Widget build(BuildContext context, WidgetRef ref) { 10 | return Center(child: Text(L10n.of(context).selectAnyRoomToSeeIt)); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/lib/features/chat_ui_showcase/mocks/general/mock_ffi_string.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter_flutter_sdk/acter_flutter_sdk_ffi.dart'; 2 | import 'package:mocktail/mocktail.dart'; 3 | 4 | class MockFfiString extends Mock implements FfiString { 5 | final String value; 6 | 7 | MockFfiString(this.value); 8 | 9 | @override 10 | String toDartString() => value; 11 | 12 | @override 13 | String toString() => value; 14 | } 15 | -------------------------------------------------------------------------------- /app/lib/features/chat_ui_showcase/mocks/general/mock_msg_content.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter_flutter_sdk/acter_flutter_sdk_ffi.dart'; 2 | import 'package:mocktail/mocktail.dart'; 3 | 4 | class MockMsgContent extends Mock implements MsgContent { 5 | final String? mockBody; 6 | final String? mockFormattedBody; 7 | 8 | MockMsgContent({this.mockBody, this.mockFormattedBody}); 9 | 10 | @override 11 | String body() => mockBody ?? 'body'; 12 | 13 | @override 14 | String? formattedBody() => mockFormattedBody; 15 | } 16 | -------------------------------------------------------------------------------- /app/lib/features/chat_ui_showcase/mocks/general/mock_option_string.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter_flutter_sdk/acter_flutter_sdk_ffi.dart'; 2 | import 'package:mocktail/mocktail.dart'; 3 | 4 | class MockOptionString extends Mock implements OptionString { 5 | final String? mockText; 6 | 7 | MockOptionString({this.mockText}); 8 | 9 | @override 10 | String? text() => mockText; 11 | } 12 | -------------------------------------------------------------------------------- /app/lib/features/chat_ui_showcase/mocks/general/mock_userId.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter_flutter_sdk/acter_flutter_sdk_ffi.dart'; 2 | import 'package:mocktail/mocktail.dart'; 3 | 4 | class MockUserId extends Mock implements UserId { 5 | final String? mockUserId; 6 | MockUserId({this.mockUserId}); 7 | 8 | @override 9 | String toString() => mockUserId ?? 'userId'; 10 | } 11 | -------------------------------------------------------------------------------- /app/lib/features/chat_ui_showcase/mocks/user/mock_user.dart: -------------------------------------------------------------------------------- 1 | import 'package:mocktail/mocktail.dart'; 2 | import 'package:flutter_chat_types/flutter_chat_types.dart'; 3 | 4 | class MockUser extends Mock implements User { 5 | final String mockUserId; 6 | final String mockDisplayName; 7 | 8 | MockUser({required this.mockUserId, required this.mockDisplayName}); 9 | 10 | @override 11 | String get id => mockUserId; 12 | 13 | String get displayName => mockDisplayName; 14 | } 15 | -------------------------------------------------------------------------------- /app/lib/features/cross_signing/providers/verification_providers.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter/features/cross_signing/providers/notifiers/verification_notifiers.dart'; 2 | import 'package:riverpod/riverpod.dart'; 3 | 4 | /// Provider of verification state 5 | final verificationStateProvider = 6 | NotifierProvider( 7 | () => VerificationNotifier(), 8 | ); 9 | -------------------------------------------------------------------------------- /app/lib/features/datetime/providers/notifiers/now_notifier.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | 3 | import 'package:flutter_riverpod/flutter_riverpod.dart'; 4 | 5 | class UtcNowNotifier extends StateNotifier { 6 | late Timer _timer; 7 | UtcNowNotifier() : super(DateTime.now().toUtc()) { 8 | _timer = Timer.periodic(const Duration(seconds: 59), (t) { 9 | state = DateTime.now().toUtc(); 10 | }); 11 | } 12 | 13 | @override 14 | void dispose() { 15 | _timer.cancel(); 16 | super.dispose(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/lib/features/datetime/providers/utc_now_provider.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter/features/datetime/providers/notifiers/now_notifier.dart'; 2 | import 'package:flutter_riverpod/flutter_riverpod.dart'; 3 | 4 | /// Provides the "current" UTC datetime, automatically updating at least 5 | /// once a minute 6 | final utcNowProvider = StateNotifierProvider( 7 | (ref) => UtcNowNotifier(), 8 | ); 9 | -------------------------------------------------------------------------------- /app/lib/features/device_permissions/calendar.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | import 'package:permission_handler/permission_handler.dart'; 3 | 4 | /// Handles calendar permission request for both Android and iOS platforms 5 | Future shouldShowCalendarPermissionInfoPage() async { 6 | if (Platform.isAndroid || Platform.isIOS) { 7 | final status = await Permission.calendarFullAccess.status; 8 | return !status.isGranted; 9 | } 10 | return false; 11 | } 12 | -------------------------------------------------------------------------------- /app/lib/features/files/actions/pick_avatar.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter/features/files/actions/pick_image.dart'; 2 | import 'package:file_picker/file_picker.dart'; 3 | import 'package:flutter/material.dart'; 4 | import 'package:acter/l10n/generated/l10n.dart'; 5 | 6 | Future pickAvatar({required BuildContext context}) => 7 | pickImage( 8 | lang: L10n.of(context), 9 | dialogTitle: L10n.of(context).uploadAvatar, 10 | ); 11 | -------------------------------------------------------------------------------- /app/lib/features/home/data/keys.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class MainNavKeys { 4 | static const dashboardHome = Key('main-nav-dashboard-home'); 5 | static const chats = Key('main-nav-chats'); 6 | static const updates = Key('main-nav-updates'); 7 | static const quickJump = Key('main-nav-quick-jump'); 8 | static const activities = Key('main-nav-activities'); 9 | } 10 | 11 | class DashboardKeys { 12 | static const widgetMySpacesHeader = Key('dashboard-my-spaces-header'); 13 | } 14 | -------------------------------------------------------------------------------- /app/lib/features/home/providers/events.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter/features/home/providers/client_providers.dart'; 2 | import 'package:acter_flutter_sdk/acter_flutter_sdk_ffi.dart'; 3 | import 'package:riverpod/riverpod.dart'; 4 | 5 | final myEventsProvider = FutureProvider>((ref) async { 6 | final client = await ref.watch(alwaysClientProvider.future); 7 | // FIXME: how to get informed about updates!?! 8 | final calendarEvents = await client.calendarEvents(); 9 | return calendarEvents.toList(); 10 | }); 11 | -------------------------------------------------------------------------------- /app/lib/features/link_room/types.dart: -------------------------------------------------------------------------------- 1 | // ChildRoomType configures the sub child type of the `Spaces` 2 | enum ChildRoomType { chat, space } 3 | -------------------------------------------------------------------------------- /app/lib/features/main/providers/main_providers.dart: -------------------------------------------------------------------------------- 1 | import 'package:app_links/app_links.dart'; 2 | import 'package:flutter_riverpod/flutter_riverpod.dart'; 3 | 4 | final quickActionVisibilityProvider = StateProvider.autoDispose( 5 | (ref) => false, 6 | ); 7 | 8 | final appLinks = AppLinks(); // AppLinks is singleton 9 | -------------------------------------------------------------------------------- /app/lib/features/news/model/news_post_state.dart: -------------------------------------------------------------------------------- 1 | import 'package:freezed_annotation/freezed_annotation.dart'; 2 | import 'package:acter/features/news/model/news_slide_model.dart'; 3 | 4 | part 'news_post_state.freezed.dart'; 5 | 6 | @freezed 7 | class NewsPostState with _$NewsPostState { 8 | const factory NewsPostState({ 9 | UpdateSlideItem? currentUpdateSlide, 10 | @Default([]) List newsSlideList, 11 | String? newsPostSpaceId, 12 | }) = _NewsPostState; 13 | } 14 | -------------------------------------------------------------------------------- /app/lib/features/notifications/types.dart: -------------------------------------------------------------------------------- 1 | enum SubscriptionStatus { 2 | subscribed, 3 | unsubscribed, 4 | parentSubscribed, 5 | parentUnsubscribed, 6 | none, 7 | } 8 | 9 | enum SubscriptionSubType { 10 | comments, 11 | attachments; 12 | 13 | String asType() => switch (this) { 14 | SubscriptionSubType.comments => 'global.acter.dev.comment', 15 | SubscriptionSubType.attachments => throw UnimplementedError(), 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /app/lib/features/onboarding/types.dart: -------------------------------------------------------------------------------- 1 | 2 | typedef CallNextPage = void Function(); -------------------------------------------------------------------------------- /app/lib/features/pins/models/pin_edit_state/pin_edit_state.dart: -------------------------------------------------------------------------------- 1 | import 'package:freezed_annotation/freezed_annotation.dart'; 2 | 3 | part 'pin_edit_state.freezed.dart'; 4 | 5 | @freezed 6 | class PinEditState with _$PinEditState { 7 | const factory PinEditState({ 8 | required String title, 9 | required String link, 10 | @Default('') String markdown, 11 | @Default(null) String? html, 12 | @Default(false) bool editMode, 13 | }) = _PinEditState; 14 | } 15 | -------------------------------------------------------------------------------- /app/lib/features/preview/types.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | 3 | import 'package:acter_flutter_sdk/acter_flutter_sdk_ffi.dart'; 4 | import 'package:flutter/widgets.dart'; 5 | import 'package:flutter_riverpod/flutter_riverpod.dart'; 6 | 7 | typedef OnForward = FutureOr Function(BuildContext, WidgetRef, Room); 8 | -------------------------------------------------------------------------------- /app/lib/features/public_room_search/models/public_search_filters.dart: -------------------------------------------------------------------------------- 1 | import 'package:freezed_annotation/freezed_annotation.dart'; 2 | import 'package:flutter/foundation.dart'; 3 | 4 | part 'public_search_filters.freezed.dart'; 5 | 6 | enum FilterBy { spaces, chats, both } 7 | 8 | @freezed 9 | class PublicSearchFilters with _$PublicSearchFilters { 10 | const factory PublicSearchFilters({ 11 | String? searchTerm, 12 | String? server, 13 | @Default(FilterBy.both) FilterBy filterBy, 14 | }) = _NewPublicSearchFilters; 15 | } 16 | -------------------------------------------------------------------------------- /app/lib/features/public_room_search/types.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter_flutter_sdk/acter_flutter_sdk_ffi.dart'; 2 | 3 | typedef OnSelectedFn = 4 | void Function( 5 | PublicSearchResultItem spaceSearchResult, 6 | String? searchServerName, 7 | ); 8 | 9 | typedef OnSelectedInnerFn = 10 | void Function(PublicSearchResultItem spaceSearchResult); 11 | 12 | class Next { 13 | final bool isStart; 14 | final String? next; 15 | 16 | const Next({this.isStart = false, this.next}); 17 | } 18 | -------------------------------------------------------------------------------- /app/lib/features/room/model/room_join_rule.dart: -------------------------------------------------------------------------------- 1 | // ignore: constant_identifier_names 2 | enum RoomJoinRule { Public, Invite, Restricted } 3 | -------------------------------------------------------------------------------- /app/lib/features/room/providers/user_settings_provider.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter/features/room/providers/notifiers/user_settings_notifier.dart'; 2 | import 'package:acter_flutter_sdk/acter_flutter_sdk_ffi.dart'; 3 | import 'package:flutter_riverpod/flutter_riverpod.dart'; 4 | 5 | final roomUserSettingsProvider = AsyncNotifierProvider.autoDispose 6 | .family( 7 | () => AsyncUserRoomSettingsNotifier(), 8 | ); 9 | -------------------------------------------------------------------------------- /app/lib/features/search/providers/quick_search_providers.dart: -------------------------------------------------------------------------------- 1 | import 'package:riverpod/riverpod.dart'; 2 | 3 | final quickSearchValueProvider = StateProvider.autoDispose((ref) => ''); 4 | -------------------------------------------------------------------------------- /app/lib/features/settings/pages/licenses_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter/common/widgets/with_sidebar.dart'; 2 | import 'package:acter/features/settings/pages/settings_page.dart'; 3 | import 'package:flutter/material.dart'; 4 | 5 | class SettingsLicensesPage extends StatelessWidget { 6 | const SettingsLicensesPage({super.key}); 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | return const WithSidebar(sidebar: SettingsPage(), child: LicensePage()); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/lib/features/settings/providers/app_settings_provider.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter/features/settings/providers/notifiers/app_settings_notifier.dart'; 2 | import 'package:acter_flutter_sdk/acter_flutter_sdk_ffi.dart'; 3 | import 'package:flutter_riverpod/flutter_riverpod.dart'; 4 | 5 | final userAppSettingsProvider = AsyncNotifierProvider.autoDispose< 6 | UserAppSettingsNotifier, 7 | ActerUserAppSettings 8 | >(() => UserAppSettingsNotifier()); 9 | -------------------------------------------------------------------------------- /app/lib/features/settings/widgets/custom_settings_tile.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:settings_ui/settings_ui.dart'; 3 | 4 | /// A wrapper for AbstractSettingsTiles 5 | class CustomSettingsTile extends StatelessWidget 6 | implements AbstractSettingsTile { 7 | final Widget child; 8 | 9 | const CustomSettingsTile({super.key, required this.child}); 10 | 11 | @override 12 | Widget build(BuildContext context) => child; 13 | } 14 | -------------------------------------------------------------------------------- /app/lib/features/share/action/mail_to.dart: -------------------------------------------------------------------------------- 1 | import 'package:url_launcher/url_launcher.dart'; 2 | 3 | Future mailTo({required String toAddress, String? subject}) async { 4 | final emailLaunchUri = Uri(scheme: 'mailto', path: toAddress, query: subject); 5 | await launchUrl(emailLaunchUri); 6 | } 7 | -------------------------------------------------------------------------------- /app/lib/features/space/providers/topic_provider.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter/common/providers/room_providers.dart'; 2 | import 'package:flutter_riverpod/flutter_riverpod.dart'; 3 | 4 | final topicProvider = FutureProvider.family(( 5 | ref, 6 | roomId, 7 | ) async { 8 | final room = await ref.watch(maybeRoomProvider(roomId).future); 9 | return room?.topic(); 10 | }); 11 | -------------------------------------------------------------------------------- /app/lib/features/space/settings/pages/index_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter/features/space/settings/widgets/space_settings_menu.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | class SpaceSettingsMenuIndexPage extends StatelessWidget { 5 | final String spaceId; 6 | const SpaceSettingsMenuIndexPage({super.key, required this.spaceId}); 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | return SpaceSettingsMenu(spaceId: spaceId, isFullPage: true); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/lib/features/spaces/model/keys.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/foundation.dart'; 2 | 3 | class SpacesKeys { 4 | static const mainActions = Key('spaces-actions'); 5 | static const actionCreate = Key('spaces-create'); 6 | } 7 | 8 | class CreateSpaceKeys { 9 | static const titleField = Key('create-space-title-field'); 10 | static const submitBtn = Key('create-space-submitBtn'); 11 | } 12 | -------------------------------------------------------------------------------- /app/lib/features/tasks/models/tasks.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | @immutable 4 | class TasksOverview { 5 | final List openTasks; 6 | final List doneTasks; 7 | 8 | const TasksOverview({required this.openTasks, required this.doneTasks}); 9 | } 10 | -------------------------------------------------------------------------------- /app/lib/router/shell_routers/search_shell_router.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter/router/routes.dart'; 2 | import 'package:acter/features/search/pages/quick_search_page.dart'; 3 | import 'package:acter/router/router.dart'; 4 | import 'package:flutter/material.dart'; 5 | import 'package:go_router/go_router.dart'; 6 | 7 | final searchShellRoutes = [ 8 | GoRoute( 9 | name: Routes.search.name, 10 | path: Routes.search.route, 11 | redirect: authGuardRedirect, 12 | pageBuilder: (context, state) { 13 | return MaterialPage(key: state.pageKey, child: const QuickSearchPage()); 14 | }, 15 | ), 16 | ]; 17 | -------------------------------------------------------------------------------- /app/linux/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral 2 | flutter/generated_plugin_registrant.cc 3 | flutter/generated_plugin_registrant.h 4 | flutter/generated_plugins.cmake 5 | -------------------------------------------------------------------------------- /app/linux/icons/app_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/linux/icons/app_icon.png -------------------------------------------------------------------------------- /app/linux/main.cc: -------------------------------------------------------------------------------- 1 | #include "my_application.h" 2 | 3 | int main(int argc, char** argv) { 4 | g_autoptr(MyApplication) app = my_application_new(); 5 | return g_application_run(G_APPLICATION(app), argc, argv); 6 | } 7 | -------------------------------------------------------------------------------- /app/linux/my_application.h: -------------------------------------------------------------------------------- 1 | #ifndef FLUTTER_MY_APPLICATION_H_ 2 | #define FLUTTER_MY_APPLICATION_H_ 3 | 4 | #include 5 | 6 | G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, 7 | GtkApplication) 8 | 9 | /** 10 | * my_application_new: 11 | * 12 | * Creates a new Flutter-based application. 13 | * 14 | * Returns: a new #MyApplication. 15 | */ 16 | MyApplication* my_application_new(); 17 | 18 | #endif // FLUTTER_MY_APPLICATION_H_ 19 | -------------------------------------------------------------------------------- /app/linux/packaging/aur/.SRCINFO: -------------------------------------------------------------------------------- 1 | pkgbase = acter 2 | pkgdesc = Casual Community Organizing 3 | pkgver = 1.24.3516 4 | pkgrel = 1 5 | url = https://github.com/KRTirtho/spotube/ 6 | arch = x86_64 7 | license = custom 8 | depends = mpv 9 | depends = libsecret 10 | depends = jsoncpp 11 | depends = xdg-user-dirs 12 | source = https://github.com/acterglobal/a3/archive/refs/tags/v1.24.3516.tar.gz 13 | 14 | pkgname = acter -------------------------------------------------------------------------------- /app/linux/packaging/global.acter.a3.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.5 3 | Type=Application 4 | 5 | Name=Acter 6 | Comment=Casual Community Organizing 7 | Categories=Network;Office;Chat;ProjectManagement; 8 | MimeType=x-scheme-handler/acter;x-scheme-handler/matrix; 9 | 10 | Icon=acter 11 | Exec=acter %u 12 | Terminal=false 13 | StartupWMClass=acter 14 | SingleMainWindow=true 15 | -------------------------------------------------------------------------------- /app/macos/.gitignore: -------------------------------------------------------------------------------- 1 | # Flutter-related 2 | **/Flutter/ephemeral/ 3 | **/Flutter/GeneratedPluginRegistrant.swift 4 | **/Pods/ 5 | 6 | # Xcode-related 7 | **/dgph 8 | **/xcuserdata/ 9 | -------------------------------------------------------------------------------- /app/macos/Flutter/Flutter-Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "ephemeral/Flutter-Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /app/macos/Flutter/Flutter-Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "ephemeral/Flutter-Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved: -------------------------------------------------------------------------------- 1 | { 2 | "originHash" : "4ffd020922d5cb1e4bad73064b0d31b058749aa71ce2bf650dc9871b0d3d582e", 3 | "pins" : [ 4 | { 5 | "identity" : "launchatlogin", 6 | "kind" : "remoteSourceControl", 7 | "location" : "https://github.com/sindresorhus/LaunchAtLogin", 8 | "state" : { 9 | "branch" : "main", 10 | "revision" : "9a894d799269cb591037f9f9cb0961510d4dca81" 11 | } 12 | } 13 | ], 14 | "version" : 3 15 | } 16 | -------------------------------------------------------------------------------- /app/macos/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/macos/Runner.xcworkspace/xcsharedata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/macos/Runner.xcworkspace/xcshareddata/swiftpm/Package.resolved: -------------------------------------------------------------------------------- 1 | { 2 | "originHash" : "4ffd020922d5cb1e4bad73064b0d31b058749aa71ce2bf650dc9871b0d3d582e", 3 | "pins" : [ 4 | { 5 | "identity" : "launchatlogin", 6 | "kind" : "remoteSourceControl", 7 | "location" : "https://github.com/sindresorhus/LaunchAtLogin", 8 | "state" : { 9 | "branch" : "main", 10 | "revision" : "9a894d799269cb591037f9f9cb0961510d4dca81" 11 | } 12 | } 13 | ], 14 | "version" : 3 15 | } 16 | -------------------------------------------------------------------------------- /app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -------------------------------------------------------------------------------- /app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -------------------------------------------------------------------------------- /app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -------------------------------------------------------------------------------- /app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -------------------------------------------------------------------------------- /app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png -------------------------------------------------------------------------------- /app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -------------------------------------------------------------------------------- /app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png -------------------------------------------------------------------------------- /app/macos/Runner/Configs/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Debug.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /app/macos/Runner/Configs/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Release.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /app/test/.gitignore: -------------------------------------------------------------------------------- 1 | **/failures/**.png -------------------------------------------------------------------------------- /app/test/common/mock_data/mock_user_id.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter_flutter_sdk/acter_flutter_sdk_ffi.dart'; 2 | import 'package:mocktail/mocktail.dart'; 3 | 4 | class MockUserId extends Mock implements UserId { 5 | final String _value; 6 | 7 | MockUserId(this._value); 8 | 9 | @override 10 | String toString() => _value; 11 | } 12 | 13 | // Utility function to create mock user IDs from str 14 | MockUserId createMockUserId(String value) => MockUserId(value); 15 | -------------------------------------------------------------------------------- /app/test/features/activity/mock_data/mock_membership_change.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter_flutter_sdk/acter_flutter_sdk_ffi.dart'; 2 | import 'package:mocktail/mocktail.dart'; 3 | import '../../../helpers/mock_basics.dart'; 4 | 5 | class MockMembershipContent extends Mock implements MembershipContent { 6 | final String? mockUserId; 7 | final String? mockChange; 8 | 9 | MockMembershipContent({this.mockUserId, this.mockChange}); 10 | 11 | @override 12 | String change() => mockChange ?? 'joined'; 13 | 14 | @override 15 | UserId userId() => MockUserId(mockUserId ?? 'mock-user-id'); 16 | } 17 | -------------------------------------------------------------------------------- /app/test/features/activity/mock_data/mock_msg_content.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter_flutter_sdk/acter_flutter_sdk_ffi.dart'; 2 | import 'package:mocktail/mocktail.dart'; 3 | 4 | class MockMsgContent extends Mock implements MsgContent { 5 | final String? mockBody; 6 | final String? mockFormattedBody; 7 | 8 | MockMsgContent({required this.mockBody, this.mockFormattedBody}); 9 | 10 | @override 11 | String body() => mockBody ?? 'message body'; 12 | 13 | @override 14 | String? formattedBody() => mockFormattedBody; 15 | } 16 | -------------------------------------------------------------------------------- /app/test/features/attachments/goldens/attachment_selection_modal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/attachments/goldens/attachment_selection_modal.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/chat_room_page/goldens_images/chat_room_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/chat_room_page/goldens_images/chat_room_page.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/dialogs/goldens/message_actions_other_long.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/dialogs/goldens/message_actions_other_long.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/dialogs/goldens/message_actions_other_medium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/dialogs/goldens/message_actions_other_medium.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/dialogs/goldens/message_actions_other_short.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/dialogs/goldens/message_actions_other_short.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/dialogs/goldens/message_actions_own_long.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/dialogs/goldens/message_actions_own_long.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/dialogs/goldens/message_actions_own_medium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/dialogs/goldens/message_actions_own_medium.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/dialogs/goldens/message_actions_own_short.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/dialogs/goldens/message_actions_own_short.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_editor/goldens/editor_default_height.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_editor/goldens/editor_default_height.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_editor/goldens/editor_long_text_without_breaks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_editor/goldens/editor_long_text_without_breaks.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_editor/goldens/editor_multiline_height.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_editor/goldens/editor_multiline_height.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_editor/goldens/editor_multiline_with_keyboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_editor/goldens/editor_multiline_with_keyboard.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_editor/goldens/editor_with_keyboard_visible.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_editor/goldens/editor_with_keyboard_visible.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_item/goldens/typing_indicator_test_long_display_name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_item/goldens/typing_indicator_test_long_display_name.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_item/goldens/typing_indicator_visible_on_selection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_item/goldens/typing_indicator_visible_on_selection.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_item/goldens/unread_counter_visible_on_selection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_item/goldens/unread_counter_visible_on_selection.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_item/last_message_widgets/goldens/profile_changes_message_event.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_item/last_message_widgets/goldens/profile_changes_message_event.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_item/last_message_widgets/goldens/room_message_event_widget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_item/last_message_widgets/goldens/room_message_event_widget.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_item/last_message_widgets/goldens/text_and_media_message_event.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_item/last_message_widgets/goldens/text_and_media_message_event.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_autolink_message_event.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_autolink_message_event.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_autolink_message_event_html_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_autolink_message_event_html_next.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_code_message_event.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_code_message_event.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_code_message_event_html_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_code_message_event_html_next.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_link_message_event.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_link_message_event.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_link_message_event_html_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_link_message_event_html_next.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_reactions_message_event.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_reactions_message_event.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_reactions_message_event_dm_chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_reactions_message_event_dm_chat.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_reactions_message_event_dm_chat_html_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_reactions_message_event_dm_chat_html_next.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_reactions_message_event_html_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_reactions_message_event_html_next.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_reactions_message_event_legacy_html.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_reactions_message_event_legacy_html.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_reply_message_event.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_reply_message_event.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_reply_message_event_html_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_reply_message_event_html_next.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_reply_with_emoji_only_html_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_reply_with_emoji_only_html_next.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_reply_with_emoji_only_legacy_html.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_reply_with_emoji_only_legacy_html.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_user_mention_message_event.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_user_mention_message_event.png -------------------------------------------------------------------------------- /app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_user_mention_message_event_html_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/features/chat_ng/widgets/chat_room/chat_event_messages/goldens_images/chat_event_user_mention_message_event_html_next.png -------------------------------------------------------------------------------- /app/test/features/comments/mock_data/mock_comments_manager.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter_flutter_sdk/acter_flutter_sdk_ffi.dart'; 2 | import 'package:mocktail/mocktail.dart'; 3 | 4 | class MockCommentsManager extends Mock implements CommentsManager {} 5 | -------------------------------------------------------------------------------- /app/test/features/comments/mock_data/mock_message_content.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter_flutter_sdk/acter_flutter_sdk_ffi.dart'; 2 | import 'package:mocktail/mocktail.dart'; 3 | 4 | class MockMsgContent extends Mock implements MsgContent { 5 | final String bodyText; 6 | 7 | MockMsgContent({required this.bodyText}); 8 | 9 | @override 10 | String body() => bodyText; 11 | } 12 | -------------------------------------------------------------------------------- /app/test/features/desktop_setup/mocks/desktop_setup_mocks.dart: -------------------------------------------------------------------------------- 1 | import 'package:launch_at_startup/launch_at_startup.dart'; 2 | import 'package:mocktail/mocktail.dart'; 3 | 4 | class MockLaunchAtStartup extends Mock implements LaunchAtStartup {} 5 | -------------------------------------------------------------------------------- /app/test/helpers/mock_image_provider.dart: -------------------------------------------------------------------------------- 1 | import 'package:image_picker/image_picker.dart'; 2 | import 'package:mocktail/mocktail.dart'; 3 | 4 | class MockImagePicker extends Mock implements ImagePicker {} 5 | -------------------------------------------------------------------------------- /app/test/helpers/mock_invites.dart: -------------------------------------------------------------------------------- 1 | // Mock classes 2 | import 'package:acter_flutter_sdk/acter_flutter_sdk_ffi.dart'; 3 | import 'package:mocktail/mocktail.dart'; 4 | 5 | class MockInvitation extends Mock implements RoomInvitation {} 6 | 7 | class MockUserProfile extends Mock implements UserProfile {} 8 | 9 | class MockOptionBuffer extends Mock implements OptionBuffer {} 10 | 11 | class MockOptionString extends Mock implements OptionString { 12 | final String? _text; 13 | 14 | MockOptionString(this._text); 15 | 16 | @override 17 | String? text() => _text; 18 | } 19 | -------------------------------------------------------------------------------- /app/test/helpers/mock_membership.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter_flutter_sdk/acter_flutter_sdk_ffi.dart'; 2 | import 'package:mocktail/mocktail.dart'; 3 | 4 | class MockMember with Mock implements Member {} 5 | -------------------------------------------------------------------------------- /app/test/helpers/mock_preferences.dart: -------------------------------------------------------------------------------- 1 | import 'package:shared_preferences/shared_preferences.dart'; 2 | 3 | import 'package:mocktail/mocktail.dart'; 4 | 5 | class MockPreferences extends Fake implements SharedPreferences {} 6 | -------------------------------------------------------------------------------- /app/test/helpers/shared_prefs.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter_flutter_sdk/acter_flutter_sdk.dart'; 2 | import 'package:shared_preferences/shared_preferences.dart'; 3 | 4 | void mockSharedPrefs(Map value) async { 5 | try { 6 | SharedPreferences.setPrefix('dev.flutter'); 7 | } catch (e) { 8 | // ignore 9 | } 10 | SharedPreferences.setMockInitialValues(value); 11 | await resetSharedPrefs(); 12 | } 13 | -------------------------------------------------------------------------------- /app/test/helpers/utils.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_chat_types/flutter_chat_types.dart'; 2 | 3 | import 'mock_a3sdk.dart'; 4 | 5 | int id = 0; 6 | 7 | /// builds dummy text message 8 | TextMessage buildMockTextMessage() { 9 | id += 1; 10 | return TextMessage( 11 | author: User(id: '$id-user'), 12 | id: '$id-msg', 13 | text: 'text of $id', 14 | ); 15 | } 16 | 17 | MockComposeDraft buildMockDraft(String text) { 18 | var mockComposeDraft = MockComposeDraft(); 19 | mockComposeDraft.setPlainText(text); 20 | return mockComposeDraft; 21 | } 22 | -------------------------------------------------------------------------------- /app/test/toolkit/html/goldens/html_rendering_ng_accepts_renamed_objects.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/toolkit/html/goldens/html_rendering_ng_accepts_renamed_objects.png -------------------------------------------------------------------------------- /app/test/toolkit/html/goldens/html_rendering_ng_calendar_event.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/toolkit/html/goldens/html_rendering_ng_calendar_event.png -------------------------------------------------------------------------------- /app/test/toolkit/html/goldens/html_rendering_ng_code_block_dart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/toolkit/html/goldens/html_rendering_ng_code_block_dart.png -------------------------------------------------------------------------------- /app/test/toolkit/html/goldens/html_rendering_ng_code_block_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/toolkit/html/goldens/html_rendering_ng_code_block_large.png -------------------------------------------------------------------------------- /app/test/toolkit/html/goldens/html_rendering_ng_many.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/toolkit/html/goldens/html_rendering_ng_many.png -------------------------------------------------------------------------------- /app/test/toolkit/html/goldens/html_rendering_ng_many_max_2_lines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/toolkit/html/goldens/html_rendering_ng_many_max_2_lines.png -------------------------------------------------------------------------------- /app/test/toolkit/html/goldens/html_rendering_ng_many_max_4_lines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/toolkit/html/goldens/html_rendering_ng_many_max_4_lines.png -------------------------------------------------------------------------------- /app/test/toolkit/html/goldens/html_rendering_ng_one_line_max_lines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/toolkit/html/goldens/html_rendering_ng_one_line_max_lines.png -------------------------------------------------------------------------------- /app/test/toolkit/html/goldens/html_rendering_ng_pin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/toolkit/html/goldens/html_rendering_ng_pin.png -------------------------------------------------------------------------------- /app/test/toolkit/html/goldens/html_rendering_ng_regular_autodetect_acter_pin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/toolkit/html/goldens/html_rendering_ng_regular_autodetect_acter_pin.png -------------------------------------------------------------------------------- /app/test/toolkit/html/goldens/html_rendering_ng_regular_autodetect_acter_user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/toolkit/html/goldens/html_rendering_ng_regular_autodetect_acter_user.png -------------------------------------------------------------------------------- /app/test/toolkit/html/goldens/html_rendering_ng_regular_autodetect_calendar_event.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/toolkit/html/goldens/html_rendering_ng_regular_autodetect_calendar_event.png -------------------------------------------------------------------------------- /app/test/toolkit/html/goldens/html_rendering_ng_regular_autodetect_links.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/toolkit/html/goldens/html_rendering_ng_regular_autodetect_links.png -------------------------------------------------------------------------------- /app/test/toolkit/html/goldens/html_rendering_ng_regular_autodetect_links_custom_font.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/toolkit/html/goldens/html_rendering_ng_regular_autodetect_links_custom_font.png -------------------------------------------------------------------------------- /app/test/toolkit/html/goldens/html_rendering_ng_regular_autodetect_matrix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/toolkit/html/goldens/html_rendering_ng_regular_autodetect_matrix.png -------------------------------------------------------------------------------- /app/test/toolkit/html/goldens/html_rendering_ng_regular_autodetect_matrix_to.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/toolkit/html/goldens/html_rendering_ng_regular_autodetect_matrix_to.png -------------------------------------------------------------------------------- /app/test/toolkit/html/goldens/html_rendering_ng_regular_autodetect_title_only.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/toolkit/html/goldens/html_rendering_ng_regular_autodetect_title_only.png -------------------------------------------------------------------------------- /app/test/toolkit/html/goldens/html_rendering_ng_regular_links.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/toolkit/html/goldens/html_rendering_ng_regular_links.png -------------------------------------------------------------------------------- /app/test/toolkit/html/goldens/html_rendering_ng_regular_links_custom_font.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/toolkit/html/goldens/html_rendering_ng_regular_links_custom_font.png -------------------------------------------------------------------------------- /app/test/toolkit/html/goldens/html_rendering_ng_text_line_breaks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/toolkit/html/goldens/html_rendering_ng_text_line_breaks.png -------------------------------------------------------------------------------- /app/test/toolkit/html/goldens/html_rendering_ng_title_only.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/test/toolkit/html/goldens/html_rendering_ng_title_only.png -------------------------------------------------------------------------------- /app/web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/web/favicon.png -------------------------------------------------------------------------------- /app/web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/web/icons/Icon-192.png -------------------------------------------------------------------------------- /app/web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/web/icons/Icon-512.png -------------------------------------------------------------------------------- /app/web/icons/Icon-maskable-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/web/icons/Icon-maskable-192.png -------------------------------------------------------------------------------- /app/web/icons/Icon-maskable-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/web/icons/Icon-maskable-512.png -------------------------------------------------------------------------------- /app/windows/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral/ 2 | flutter/generated_plugin_registrant.cc 3 | flutter/generated_plugin_registrant.h 4 | flutter/generated_plugins.cmake 5 | 6 | # Visual Studio user-specific files. 7 | *.suo 8 | *.user 9 | *.userosscache 10 | *.sln.docstates 11 | 12 | # Visual Studio build-related files. 13 | x64/ 14 | x86/ 15 | 16 | # Visual Studio cache files 17 | # files ending in .cache can be ignored 18 | *.[Cc]ache 19 | # but keep track of directories ending in .cache 20 | !*.[Cc]ache/ 21 | -------------------------------------------------------------------------------- /app/windows/runner/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by Runner.rc 4 | // 5 | #define IDI_APP_ICON 101 6 | 7 | // Next default values for new objects 8 | // 9 | #ifdef APSTUDIO_INVOKED 10 | #ifndef APSTUDIO_READONLY_SYMBOLS 11 | #define _APS_NEXT_RESOURCE_VALUE 102 12 | #define _APS_NEXT_COMMAND_VALUE 40001 13 | #define _APS_NEXT_CONTROL_VALUE 1001 14 | #define _APS_NEXT_SYMED_VALUE 101 15 | #endif 16 | #endif 17 | -------------------------------------------------------------------------------- /app/windows/runner/resources/app_icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/app/windows/runner/resources/app_icon.ico -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | api/main/ 2 | public -------------------------------------------------------------------------------- /docs/api/main/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/docs/api/main/.gitkeep -------------------------------------------------------------------------------- /docs/static/CNAME: -------------------------------------------------------------------------------- 1 | dev.acter.global -------------------------------------------------------------------------------- /native/acter/ffi_bindings_extra.dart: -------------------------------------------------------------------------------- 1 | // These are dart extensions we add to the generated ffi bindings after 2 | // processing. 3 | 4 | extension AddressClientExtension on Client { 5 | int get address => _box.borrow(); 6 | } 7 | -------------------------------------------------------------------------------- /native/acter/src/acter.udl: -------------------------------------------------------------------------------- 1 | namespace acter { }; -------------------------------------------------------------------------------- /native/acter/src/api/invitations/client.rs: -------------------------------------------------------------------------------- 1 | use super::manager::InvitationsManager; 2 | use crate::Client; 3 | 4 | impl Client { 5 | pub fn invitations(&self) -> InvitationsManager { 6 | InvitationsManager::new(self.clone()) 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /native/acter/src/api/invitations/mod.rs: -------------------------------------------------------------------------------- 1 | mod client; 2 | mod manager; 3 | mod object_manager; 4 | mod room_invitation; 5 | 6 | pub use manager::InvitationsManager; 7 | pub use object_manager::ObjectInvitationsManager; 8 | pub use room_invitation::RoomInvitation; 9 | -------------------------------------------------------------------------------- /native/acter/src/api/push.rs: -------------------------------------------------------------------------------- 1 | pub mod client; 2 | mod notification_item; 3 | mod notification_settings; 4 | mod pusher; 5 | 6 | pub use notification_item::{NotificationItem, NotificationRoom, NotificationSender}; 7 | pub(crate) use notification_settings::{notification_mode_from_input, room_notification_mode_name}; 8 | pub use notification_settings::{NotificationSettings, SubscriptionStatus}; 9 | pub use pusher::Pusher; 10 | -------------------------------------------------------------------------------- /native/acter/src/api/room/subscription.rs: -------------------------------------------------------------------------------- 1 | use acter_core::referencing::ExecuteReference; 2 | use tokio::sync::broadcast::Receiver; 3 | 4 | use super::Room; 5 | 6 | impl Room { 7 | pub fn subscribe>(&self, key: K) -> Receiver<()> { 8 | self.core.subscribe(key) 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /native/acter/src/api/settings.rs: -------------------------------------------------------------------------------- 1 | mod space; 2 | mod user; 3 | 4 | pub use space::{ 5 | ActerAppSettings, ActerAppSettingsBuilder, ActerAppSettingsContent, EventsSettings, 6 | NewsSettings, PinsSettings, RoomPowerLevels, SimpleOnOffSetting, SimpleOnOffSettingBuilder, 7 | SimpleSettingWithTurnOff, SimpleSettingWithTurnOffBuilder, StoriesSettings, TasksSettings, 8 | }; 9 | 10 | pub use user::{ActerUserAppSettings, ActerUserAppSettingsBuilder}; 11 | -------------------------------------------------------------------------------- /native/acter/src/api/timeline/mod.rs: -------------------------------------------------------------------------------- 1 | mod item; 2 | mod msg_content; 3 | mod msg_draft; 4 | mod room_event; 5 | mod stream; 6 | 7 | pub use item::{EventSendState, TimelineEventItem, TimelineItem, TimelineVirtualItem}; 8 | pub use msg_content::MsgContent; 9 | pub use msg_draft::MsgDraft; 10 | pub use room_event::TimelineEventContent; 11 | pub use stream::{TimelineItemDiff, TimelineStream}; 12 | -------------------------------------------------------------------------------- /native/acter/src/api_next/error.rs: -------------------------------------------------------------------------------- 1 | use core::result::Result as CoreResult; 2 | 3 | #[derive(Debug, uniffi::Error, thiserror::Error)] 4 | #[uniffi(flat_error)] 5 | pub enum ActerError { 6 | #[error("data store disconnected")] 7 | Disconnect(#[from] std::io::Error), 8 | #[error("unknown processing error")] 9 | Unknown, 10 | #[error("{0}")] 11 | Anyhow(#[from] anyhow::Error), 12 | } 13 | 14 | pub type Result = CoreResult; 15 | -------------------------------------------------------------------------------- /native/acter/src/api_next/mod.rs: -------------------------------------------------------------------------------- 1 | uniffi::include_scaffolding!("acter"); 2 | 3 | pub mod client; 4 | pub mod error; 5 | pub mod notification; 6 | pub mod support; 7 | -------------------------------------------------------------------------------- /native/acter/src/api_next/support.rs: -------------------------------------------------------------------------------- 1 | use std::sync::Arc; 2 | 3 | use acter_core::client; 4 | 5 | use super::client::UniffiClient; 6 | use crate::api::Client; 7 | use std::os::raw::c_void; 8 | 9 | #[no_mangle] 10 | pub extern "C" fn acter_support_ffigen_client_to_uniffi_client(client_ref: isize) -> *const c_void { 11 | // manually convert the pointer to a Client, then wrap it into a uniffi client in an Arc 12 | let client = unsafe { &mut *(client_ref as *mut Client) }; 13 | let uniffi_client = UniffiClient::wrap(client.clone()); 14 | Arc::into_raw(Arc::new(uniffi_client)) as *const c_void 15 | } 16 | -------------------------------------------------------------------------------- /native/acter/src/platform/mod.rs: -------------------------------------------------------------------------------- 1 | mod native; 2 | 3 | #[cfg(target_os = "android")] 4 | mod android; 5 | 6 | #[cfg(target_os = "android")] 7 | pub use android::*; 8 | 9 | #[cfg(target_os = "ios")] 10 | mod ios; 11 | 12 | #[cfg(target_os = "ios")] 13 | pub use ios::*; 14 | 15 | #[cfg(not(any(target_os = "android", target_os = "ios")))] 16 | mod desktop; 17 | #[cfg(not(any(target_os = "android", target_os = "ios")))] 18 | pub use desktop::*; 19 | 20 | pub use native::{rotate_log_file, sanitize, would_log, write_log}; 21 | -------------------------------------------------------------------------------- /native/acter/src/uniffi-bindgen.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | uniffi::uniffi_bindgen_main() 3 | } 4 | -------------------------------------------------------------------------------- /native/acter/uniffi.toml: -------------------------------------------------------------------------------- 1 | [bindings.swift] 2 | cdylib_name = "acter" 3 | omit_argument_labels = true 4 | generate_module_map = true 5 | 6 | [bindings.dart] 7 | cdylib_name = "acter" 8 | -------------------------------------------------------------------------------- /native/cli/src/main.rs: -------------------------------------------------------------------------------- 1 | #![recursion_limit = "256"] 2 | #![warn(clippy::all)] 3 | 4 | mod action; 5 | mod config; 6 | 7 | use anyhow::Result; 8 | use clap::Parser; 9 | use config::ActerCliConfig; 10 | use env_logger::Builder; 11 | 12 | #[tokio::main] 13 | async fn main() -> Result<()> { 14 | let cli = ActerCliConfig::parse(); 15 | Builder::default().parse_filters(&cli.log).try_init()?; 16 | cli.action.run().await?; 17 | Ok(()) 18 | } 19 | -------------------------------------------------------------------------------- /native/core/src/activities/status.rs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /native/core/src/models/calendar.rs: -------------------------------------------------------------------------------- 1 | mod event; 2 | 3 | pub use event::{CalendarEvent, CalendarEventUpdate}; 4 | -------------------------------------------------------------------------------- /native/core/src/models/capabilities.rs: -------------------------------------------------------------------------------- 1 | #[derive(Debug, Eq, PartialEq)] 2 | pub enum Capability { 3 | // someone can add reaction on this 4 | Reactable, 5 | // someone can add comment on this 6 | Commentable, 7 | // someone can add attachment on this 8 | Attachmentable, 9 | // users reads/views are being tracked 10 | ReadTracking, 11 | // someone can rsvp on this 12 | RSVPable, 13 | // someone can invite on this 14 | Inviteable, 15 | // another custom capability 16 | Custom(&'static str), 17 | } 18 | -------------------------------------------------------------------------------- /native/core/src/models/tag.rs: -------------------------------------------------------------------------------- 1 | use crate::events::Color; 2 | 3 | #[derive(Clone)] 4 | pub struct Tag { 5 | pub(crate) title: String, 6 | pub(crate) color: Option, 7 | } 8 | 9 | impl Tag { 10 | pub fn title(&self) -> String { 11 | self.title.clone() 12 | } 13 | 14 | pub fn hash_tag(&self) -> String { 15 | self.title.to_lowercase() 16 | } 17 | 18 | pub fn color(&self) -> Option { 19 | self.color 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /native/core/src/models/tasks.rs: -------------------------------------------------------------------------------- 1 | mod task; 2 | mod task_list; 3 | 4 | pub use task::{Task, TaskSelfAssign, TaskSelfUnassign, TaskUpdate}; 5 | pub use task_list::{TaskList, TaskListUpdate, TaskStats}; 6 | -------------------------------------------------------------------------------- /native/core/src/push.rs: -------------------------------------------------------------------------------- 1 | use matrix_sdk_base::ruma::push::{Action, NewConditionalPushRule, NewPushRule, PushCondition}; 2 | 3 | pub fn default_rules() -> Vec { 4 | vec![ 5 | // always notify about news as a default 6 | NewPushRule::Underride(NewConditionalPushRule::new( 7 | "global.acter.dev.news".to_owned(), 8 | vec![PushCondition::EventMatch { 9 | key: "type".to_owned(), 10 | pattern: "global.acter.dev.news".to_owned(), 11 | }], 12 | vec![Action::Notify], 13 | )), 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /native/core/src/templates/filters.rs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /native/media-cache-wrapper/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "matrix-sdk-store-media-cache-wrapper" 3 | description = "Wrap any matrix-sdk State Store to store media files in a separate directory instead" 4 | version = "0.1.3+dev" 5 | edition = "2021" 6 | rust-version = "1.70" 7 | authors = ["Benjamin Kampmann ", "Acter Team "] 8 | repository = "https://github.com/acterglobal/a3/tree/main/native/media-cache-wrapper" 9 | keywords = ["matrix-sdk", "cache", "store"] 10 | readme = "Readme.md" 11 | license = "MIT OR Apache-2.0" 12 | 13 | 14 | [dependencies] 15 | -------------------------------------------------------------------------------- /native/media-cache-wrapper/Readme.md: -------------------------------------------------------------------------------- 1 | # Matrix SDK Store Media Cache Wrapper 2 | 3 | ## Deprecated 4 | 5 | Since [the merge #3858 of into `main`](https://github.com/matrix-org/matrix-rust-sdk/pull/3858) splitting the media cache features off into its own trait, there is no need to wrap the matrix-sdk store anymore to do so. Thus this crate is no longer needed and won’t be maintained. 6 | -------------------------------------------------------------------------------- /native/media-cache-wrapper/src/lib.rs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /native/test/src/lib.rs: -------------------------------------------------------------------------------- 1 | #![recursion_limit = "256"] 2 | #[cfg(test)] 3 | mod tests; 4 | 5 | #[cfg(test)] 6 | mod utils; 7 | -------------------------------------------------------------------------------- /native/test/src/tests/fixtures/PNG_transparency_demonstration_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/native/test/src/tests/fixtures/PNG_transparency_demonstration_1.png -------------------------------------------------------------------------------- /native/test/src/tests/fixtures/big_buck_bunny.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/native/test/src/tests/fixtures/big_buck_bunny.mp4 -------------------------------------------------------------------------------- /native/test/src/tests/fixtures/kingfisher.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/native/test/src/tests/fixtures/kingfisher.jpg -------------------------------------------------------------------------------- /native/test/src/tests/media_msg/mod.rs: -------------------------------------------------------------------------------- 1 | mod blurhash; 2 | mod download; 3 | mod thumbnail; 4 | -------------------------------------------------------------------------------- /native/test/src/tests/notifications/mod.rs: -------------------------------------------------------------------------------- 1 | mod attachments; 2 | mod comments; 3 | mod event; 4 | mod likes; 5 | mod news; 6 | mod pins; 7 | mod references; 8 | mod tasks; 9 | -------------------------------------------------------------------------------- /native/test/src/tests/room/mod.rs: -------------------------------------------------------------------------------- 1 | mod policy_rule_room; 2 | mod policy_rule_server; 3 | mod policy_rule_user; 4 | mod room_avatar; 5 | mod room_create; 6 | mod room_encryption; 7 | mod room_guest_access; 8 | mod room_history_visibility; 9 | mod room_join_rules; 10 | mod room_name; 11 | mod room_pinned_events; 12 | mod room_power_levels; 13 | mod room_server_acl; 14 | mod room_tombstone; 15 | mod room_topic; 16 | mod space_child; 17 | mod space_parent; 18 | mod user_settings; 19 | -------------------------------------------------------------------------------- /packages/acter_notifify/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: "b0850beeb25f6d5b10426284f506557f66181b36" 8 | channel: "stable" 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /packages/acter_notifify/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.0.1 2 | 3 | * TODO: Describe initial release. 4 | -------------------------------------------------------------------------------- /packages/acter_notifify/LICENSE: -------------------------------------------------------------------------------- 1 | TODO: Add your license here. 2 | -------------------------------------------------------------------------------- /packages/acter_notifify/analysis_options.yaml: -------------------------------------------------------------------------------- 1 | include: package:flutter_lints/flutter.yaml 2 | 3 | # Additional information about this file can be found at 4 | # https://dart.dev/guides/language/analysis-options 5 | -------------------------------------------------------------------------------- /packages/acter_notifify/lib/platform/linux.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter_flutter_sdk/acter_flutter_sdk_ffi.dart'; 2 | import 'package:flutter_local_notifications/flutter_local_notifications.dart'; 3 | 4 | Future genLinuxDetails( 5 | NotificationItem notification) async { 6 | return const LinuxNotificationDetails( 7 | category: LinuxNotificationCategory.imReceived, 8 | ); 9 | } 10 | -------------------------------------------------------------------------------- /packages/acter_notifify/test/mock_data/mock_activity_object.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter_flutter_sdk/acter_flutter_sdk_ffi.dart'; 2 | import 'package:mocktail/mocktail.dart'; 3 | 4 | class MockActivityObject extends Mock implements ActivityObject {} 5 | -------------------------------------------------------------------------------- /packages/acter_notifify/test/mock_data/mock_notification_item.dart: -------------------------------------------------------------------------------- 1 | import 'package:acter_flutter_sdk/acter_flutter_sdk_ffi.dart'; 2 | import 'package:mocktail/mocktail.dart'; 3 | 4 | class MockNotificationItem extends Mock implements NotificationItem {} 5 | -------------------------------------------------------------------------------- /packages/acter_notifify/test/mock_data/mock_object.dart: -------------------------------------------------------------------------------- 1 | //Object Emoji 2 | enum MockObject { 3 | //LIST OF OBJECT EMOJIS 4 | news('🚀'), 5 | story('📖'), 6 | pin('📌'), 7 | event('🗓️'), 8 | taskList('📋'), 9 | taskItem('☑️'); 10 | 11 | const MockObject(this.emoji); 12 | 13 | final String emoji; 14 | } 15 | -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: ee4e09cce01d6f2d7f4baebd247fde02e5008851 8 | channel: stable 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/analysis_options.yaml: -------------------------------------------------------------------------------- 1 | include: package:flutter_lints/flutter.yaml 2 | 3 | linter: 4 | rules: 5 | prefer_single_quotes: true 6 | always_declare_return_types: true 7 | always_use_package_imports: true 8 | file_names: false 9 | -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/android/app/src/main/kotlin/com/example/example/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.example 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/acter_trigger_auto_complete/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/acter_trigger_auto_complete/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/acter_trigger_auto_complete/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/acter_trigger_auto_complete/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/acter_trigger_auto_complete/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip 7 | -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") 4 | def properties = new Properties() 5 | 6 | assert localPropertiesFile.exists() 7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } 8 | 9 | def flutterSdkPath = properties.getProperty("flutter.sdk") 10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" 12 | -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/example/lib/src/options/options.dart: -------------------------------------------------------------------------------- 1 | export 'emoji_autocomplete_options.dart'; 2 | export 'hashtag_autocomplete_options.dart'; 3 | export 'mention_autocomplete_options.dart'; 4 | -------------------------------------------------------------------------------- /packages/acter_trigger_auto_complete/lib/acter_trigger_autocomplete.dart: -------------------------------------------------------------------------------- 1 | export 'package:flutter_portal/flutter_portal.dart' show Portal; 2 | 3 | export 'src/acter_trigger_autocomplete.dart'; 4 | export 'src/autocomplete_trigger.dart'; 5 | export 'src/autocomplete_query.dart'; 6 | export 'src/acter_trigger_autocomplete_controller.dart'; 7 | -------------------------------------------------------------------------------- /packages/rust_sdk/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.0.1 2 | 3 | * TODO: Describe initial release. 4 | -------------------------------------------------------------------------------- /packages/rust_sdk/LICENSE: -------------------------------------------------------------------------------- 1 | TODO: Add your license here. 2 | -------------------------------------------------------------------------------- /packages/rust_sdk/analysis_options.yaml: -------------------------------------------------------------------------------- 1 | include: package:flutter_lints/flutter.yaml 2 | 3 | linter: 4 | rules: 5 | prefer_single_quotes: true 6 | always_declare_return_types: true 7 | always_use_package_imports: true 8 | file_names: false 9 | 10 | analyzer: 11 | exclude: 12 | - lib/acter_flutter_sdk_ffi.dart 13 | - lib/acter.dart 14 | 15 | -------------------------------------------------------------------------------- /packages/rust_sdk/android/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | -------------------------------------------------------------------------------- /packages/rust_sdk/android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'a3sdk' -------------------------------------------------------------------------------- /packages/rust_sdk/android/src/main/.gitignore: -------------------------------------------------------------------------------- 1 | jniLibs -------------------------------------------------------------------------------- /packages/rust_sdk/android/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/rust_sdk/ios/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/rust_sdk/ios/Assets/.gitkeep -------------------------------------------------------------------------------- /packages/rust_sdk/ios/Classes/ActerFlutterSdkPlugin.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | @interface ActerFlutterSdkPlugin : NSObject 4 | @end -------------------------------------------------------------------------------- /packages/rust_sdk/macos/Classes/ActerFlutterSdkPlugin.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/rust_sdk/macos/Classes/ActerFlutterSdkPlugin.h -------------------------------------------------------------------------------- /packages/rust_sdk/windows/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ 2 | 3 | # Visual Studio user-specific files. 4 | *.suo 5 | *.user 6 | *.userosscache 7 | *.sln.docstates 8 | 9 | # Visual Studio build-related files. 10 | x64/ 11 | x86/ 12 | 13 | # Visual Studio cache files 14 | # files ending in .cache can be ignored 15 | *.[Cc]ache 16 | # but keep track of directories ending in .cache 17 | !*.[Cc]ache/ 18 | -------------------------------------------------------------------------------- /packages/rust_sdk/windows/acter_flutter_sdk_plugin_c_api.cpp: -------------------------------------------------------------------------------- 1 | #include "include/acter_flutter_sdk/acter_flutter_sdk_plugin_c_api.h" 2 | 3 | #include 4 | 5 | #include "acter_flutter_sdk_plugin.h" 6 | 7 | void ActerFlutterSdkPluginCApiRegisterWithRegistrar( 8 | FlutterDesktopPluginRegistrarRef registrar) { 9 | acter_flutter_sdk::ActerFlutterSdkPlugin::RegisterWithRegistrar( 10 | flutter::PluginRegistrarManager::GetInstance() 11 | ->GetRegistrar(registrar)); 12 | } 13 | -------------------------------------------------------------------------------- /packages/shake_detector/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: "c1df7d07ac60336309bae9dd2d48e7cb8844ec98" 8 | channel: "beta" 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /packages/shake_detector/analysis_options.yaml: -------------------------------------------------------------------------------- 1 | include: package:flutter_lints/flutter.yaml 2 | 3 | # Additional information about this file can be found at 4 | # https://dart.dev/guides/language/analysis-options 5 | -------------------------------------------------------------------------------- /packages/shake_detector/example/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /packages/shake_detector/example/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/shake_detector/example/android/app/src/main/kotlin/com/example/example/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.example 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() 6 | -------------------------------------------------------------------------------- /packages/shake_detector/example/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /packages/shake_detector/example/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /packages/shake_detector/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/shake_detector/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/shake_detector/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/shake_detector/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/shake_detector/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/shake_detector/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/shake_detector/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/shake_detector/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/shake_detector/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/shake_detector/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/shake_detector/example/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/shake_detector/example/android/build.gradle: -------------------------------------------------------------------------------- 1 | allprojects { 2 | repositories { 3 | google() 4 | mavenCentral() 5 | } 6 | } 7 | 8 | rootProject.buildDir = '../build' 9 | subprojects { 10 | project.buildDir = "${rootProject.buildDir}/${project.name}" 11 | } 12 | subprojects { 13 | project.evaluationDependsOn(':app') 14 | } 15 | 16 | tasks.register("clean", Delete) { 17 | delete rootProject.buildDir 18 | } 19 | -------------------------------------------------------------------------------- /packages/shake_detector/example/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx4G 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /packages/shake_detector/example/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip 6 | -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/shake_detector/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/shake_detector/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/shake_detector/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/packages/shake_detector/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /packages/shake_detector/example/ios/RunnerTests/RunnerTests.swift: -------------------------------------------------------------------------------- 1 | import Flutter 2 | import UIKit 3 | import XCTest 4 | 5 | class RunnerTests: XCTestCase { 6 | 7 | func testExample() { 8 | // If you add code to the Runner application, consider adding tests here. 9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest. 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /rust-toolchain: -------------------------------------------------------------------------------- 1 | [toolchain] 2 | channel = "nightly-2025-04-22" 3 | components = ["rustfmt", "clippy", "rust-src"] 4 | targets = [ 5 | "wasm32-unknown-unknown", 6 | "aarch64-linux-android", 7 | "armv7-linux-androideabi", 8 | "x86_64-linux-android", 9 | "i686-linux-android", 10 | "aarch64-apple-ios", 11 | "x86_64-apple-ios", 12 | "aarch64-apple-ios-sim", 13 | "aarch64-apple-darwin", 14 | "x86_64-apple-darwin", 15 | ] -------------------------------------------------------------------------------- /util/conv_test_man/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /util/conv_test_man/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /util/conv_test_man/android/app/src/main/kotlin/com/example/conv_test_man/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.conv_test_man 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /util/conv_test_man/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /util/conv_test_man/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /util/conv_test_man/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /util/conv_test_man/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /util/conv_test_man/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /util/conv_test_man/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /util/conv_test_man/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /util/conv_test_man/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /util/conv_test_man/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /util/conv_test_man/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip 6 | -------------------------------------------------------------------------------- /util/conv_test_man/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /util/conv_test_man/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /util/conv_test_man/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /util/conv_test_man/ios/RunnerTests/RunnerTests.swift: -------------------------------------------------------------------------------- 1 | import Flutter 2 | import UIKit 3 | import XCTest 4 | 5 | class RunnerTests: XCTestCase { 6 | 7 | func testExample() { 8 | // If you add code to the Runner application, consider adding tests here. 9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest. 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /util/conv_test_man/linux/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral 2 | -------------------------------------------------------------------------------- /util/conv_test_man/linux/flutter/generated_plugin_registrant.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #include "generated_plugin_registrant.h" 8 | 9 | 10 | void fl_register_plugins(FlPluginRegistry* registry) { 11 | } 12 | -------------------------------------------------------------------------------- /util/conv_test_man/linux/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 8 | #define GENERATED_PLUGIN_REGISTRANT_ 9 | 10 | #include 11 | 12 | // Registers Flutter plugins. 13 | void fl_register_plugins(FlPluginRegistry* registry); 14 | 15 | #endif // GENERATED_PLUGIN_REGISTRANT_ 16 | -------------------------------------------------------------------------------- /util/conv_test_man/linux/main.cc: -------------------------------------------------------------------------------- 1 | #include "my_application.h" 2 | 3 | int main(int argc, char** argv) { 4 | g_autoptr(MyApplication) app = my_application_new(); 5 | return g_application_run(G_APPLICATION(app), argc, argv); 6 | } 7 | -------------------------------------------------------------------------------- /util/conv_test_man/linux/my_application.h: -------------------------------------------------------------------------------- 1 | #ifndef FLUTTER_MY_APPLICATION_H_ 2 | #define FLUTTER_MY_APPLICATION_H_ 3 | 4 | #include 5 | 6 | G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, 7 | GtkApplication) 8 | 9 | /** 10 | * my_application_new: 11 | * 12 | * Creates a new Flutter-based application. 13 | * 14 | * Returns: a new #MyApplication. 15 | */ 16 | MyApplication* my_application_new(); 17 | 18 | #endif // FLUTTER_MY_APPLICATION_H_ 19 | -------------------------------------------------------------------------------- /util/conv_test_man/macos/.gitignore: -------------------------------------------------------------------------------- 1 | # Flutter-related 2 | **/Flutter/ephemeral/ 3 | **/Pods/ 4 | 5 | # Xcode-related 6 | **/dgph 7 | **/xcuserdata/ 8 | -------------------------------------------------------------------------------- /util/conv_test_man/macos/Flutter/Flutter-Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "ephemeral/Flutter-Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /util/conv_test_man/macos/Flutter/Flutter-Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "ephemeral/Flutter-Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /util/conv_test_man/macos/Flutter/GeneratedPluginRegistrant.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | import FlutterMacOS 6 | import Foundation 7 | 8 | import file_picker 9 | import path_provider_foundation 10 | 11 | func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { 12 | FilePickerPlugin.register(with: registry.registrar(forPlugin: "FilePickerPlugin")) 13 | PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) 14 | } 15 | -------------------------------------------------------------------------------- /util/conv_test_man/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /util/conv_test_man/macos/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /util/conv_test_man/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /util/conv_test_man/macos/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | @NSApplicationMain 5 | class AppDelegate: FlutterAppDelegate { 6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { 7 | return true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /util/conv_test_man/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -------------------------------------------------------------------------------- /util/conv_test_man/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -------------------------------------------------------------------------------- /util/conv_test_man/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -------------------------------------------------------------------------------- /util/conv_test_man/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -------------------------------------------------------------------------------- /util/conv_test_man/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png -------------------------------------------------------------------------------- /util/conv_test_man/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -------------------------------------------------------------------------------- /util/conv_test_man/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png -------------------------------------------------------------------------------- /util/conv_test_man/macos/Runner/Configs/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Debug.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /util/conv_test_man/macos/Runner/Configs/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Release.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /util/conv_test_man/macos/Runner/DebugProfile.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.cs.allow-jit 8 | 9 | com.apple.security.network.server 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /util/conv_test_man/macos/Runner/MainFlutterWindow.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | class MainFlutterWindow: NSWindow { 5 | override func awakeFromNib() { 6 | let flutterViewController = FlutterViewController() 7 | let windowFrame = self.frame 8 | self.contentViewController = flutterViewController 9 | self.setFrame(windowFrame, display: true) 10 | 11 | RegisterGeneratedPlugins(registry: flutterViewController) 12 | 13 | super.awakeFromNib() 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /util/conv_test_man/macos/Runner/Release.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /util/conv_test_man/macos/RunnerTests/RunnerTests.swift: -------------------------------------------------------------------------------- 1 | import FlutterMacOS 2 | import Cocoa 3 | import XCTest 4 | 5 | class RunnerTests: XCTestCase { 6 | 7 | func testExample() { 8 | // If you add code to the Runner application, consider adding tests here. 9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest. 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /util/conv_test_man/web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/web/favicon.png -------------------------------------------------------------------------------- /util/conv_test_man/web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/web/icons/Icon-192.png -------------------------------------------------------------------------------- /util/conv_test_man/web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/web/icons/Icon-512.png -------------------------------------------------------------------------------- /util/conv_test_man/web/icons/Icon-maskable-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/web/icons/Icon-maskable-192.png -------------------------------------------------------------------------------- /util/conv_test_man/web/icons/Icon-maskable-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/web/icons/Icon-maskable-512.png -------------------------------------------------------------------------------- /util/conv_test_man/windows/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral/ 2 | 3 | # Visual Studio user-specific files. 4 | *.suo 5 | *.user 6 | *.userosscache 7 | *.sln.docstates 8 | 9 | # Visual Studio build-related files. 10 | x64/ 11 | x86/ 12 | 13 | # Visual Studio cache files 14 | # files ending in .cache can be ignored 15 | *.[Cc]ache 16 | # but keep track of directories ending in .cache 17 | !*.[Cc]ache/ 18 | -------------------------------------------------------------------------------- /util/conv_test_man/windows/flutter/generated_plugin_registrant.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #include "generated_plugin_registrant.h" 8 | 9 | 10 | void RegisterPlugins(flutter::PluginRegistry* registry) { 11 | } 12 | -------------------------------------------------------------------------------- /util/conv_test_man/windows/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 8 | #define GENERATED_PLUGIN_REGISTRANT_ 9 | 10 | #include 11 | 12 | // Registers Flutter plugins. 13 | void RegisterPlugins(flutter::PluginRegistry* registry); 14 | 15 | #endif // GENERATED_PLUGIN_REGISTRANT_ 16 | -------------------------------------------------------------------------------- /util/conv_test_man/windows/runner/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by Runner.rc 4 | // 5 | #define IDI_APP_ICON 101 6 | 7 | // Next default values for new objects 8 | // 9 | #ifdef APSTUDIO_INVOKED 10 | #ifndef APSTUDIO_READONLY_SYMBOLS 11 | #define _APS_NEXT_RESOURCE_VALUE 102 12 | #define _APS_NEXT_COMMAND_VALUE 40001 13 | #define _APS_NEXT_CONTROL_VALUE 1001 14 | #define _APS_NEXT_SYMED_VALUE 101 15 | #endif 16 | #endif 17 | -------------------------------------------------------------------------------- /util/conv_test_man/windows/runner/resources/app_icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acterglobal/a3/18ae5091570c369de53d9bf765fdc4163cd1ad1f/util/conv_test_man/windows/runner/resources/app_icon.ico -------------------------------------------------------------------------------- /util/mr_minutes/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "mr_minutes" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 7 | 8 | [dependencies] 9 | git2 = "0.20.0" 10 | clap = { version = "4.3.15", features = ["derive"] } 11 | anyhow = "1.0.71" 12 | log = "0.4.19" 13 | env_logger = "0.11.7" 14 | -------------------------------------------------------------------------------- /util/sari/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "sari" 3 | version = "0.1.0" 4 | edition = "2024" 5 | rust-version.workspace = true 6 | 7 | [dependencies] 8 | 9 | clap = { version = "4.3.15", features = ["derive"] } 10 | anyhow = "1.0.71" 11 | env_logger = "0.11.7" 12 | uniffi-dart = { workspace = true, features = ["build"] } -------------------------------------------------------------------------------- /util/sari/src/commands/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod build; 2 | -------------------------------------------------------------------------------- /util/sari/src/main.rs: -------------------------------------------------------------------------------- 1 | use anyhow::Result; 2 | use clap::Parser; 3 | 4 | mod commands; 5 | 6 | #[derive(Parser, Debug)] 7 | enum Command { 8 | Build(commands::build::BuildOpts), 9 | } 10 | 11 | #[derive(Parser, Debug)] 12 | #[command(author, version, about, long_about = None)] 13 | struct Args { 14 | #[command(subcommand)] 15 | command: Command, 16 | } 17 | 18 | fn main() -> Result<()> { 19 | let args = Args::parse(); 20 | let _ = env_logger::try_init(); 21 | match args.command { 22 | Command::Build(opts) => commands::build::build(opts), 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /util/test_server/.config/acter-synapse-ci/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ghcr.io/element-hq/synapse:latest 2 | RUN apt-get update && apt-get install git -y 3 | RUN pip install git+https://github.com/acterglobal/synapse-super-invites/@ben-share-link-generator 4 | ADD ci-start.sh /ci-start.sh 5 | RUN chmod 770 /ci-start.sh 6 | ENTRYPOINT /ci-start.sh -------------------------------------------------------------------------------- /util/test_server/.config/nginx.conf: -------------------------------------------------------------------------------- 1 | events { 2 | worker_connections 1024; 3 | } 4 | 5 | http { 6 | include mime.types; 7 | sendfile on; 8 | 9 | server { 10 | listen 8099; 11 | listen [::]:8099; 12 | 13 | resolver 127.0.0.11; 14 | autoindex off; 15 | 16 | server_name _; 17 | server_tokens off; 18 | gzip_static on; 19 | 20 | root /app/static; 21 | 22 | location /p/ { 23 | try_files $uri $uri.html =404; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /util/test_server/.config/rageshake.yml: -------------------------------------------------------------------------------- 1 | allowed_app_names: ["acter-dev"] -------------------------------------------------------------------------------- /util/test_server/.gitignore: -------------------------------------------------------------------------------- 1 | .local 2 | .vagrant --------------------------------------------------------------------------------