├── .gitignore ├── .metadata ├── .vscode └── settings.json ├── CONTRIBUTING.md ├── LICENSE ├── Makefile ├── README.md ├── analysis_options.yaml ├── android ├── .gitignore ├── app │ ├── build.gradle │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── ic_launcher-playstore.png │ │ ├── kotlin │ │ │ └── io │ │ │ │ └── cylonix │ │ │ │ └── tailchat │ │ │ │ ├── ChatMessageReceiver.kt │ │ │ │ ├── ChatService.kt │ │ │ │ ├── Logger.kt │ │ │ │ ├── MainActivity.kt │ │ │ │ ├── NetworkError.kt │ │ │ │ └── NetworkMonitor.kt │ │ └── res │ │ │ ├── drawable-anydpi │ │ │ └── launch_image.png │ │ │ ├── drawable-v21 │ │ │ └── launch_background.xml │ │ │ ├── drawable │ │ │ └── launch_background.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.webp │ │ │ ├── ic_launcher_foreground.webp │ │ │ └── ic_launcher_round.webp │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.webp │ │ │ ├── ic_launcher_foreground.webp │ │ │ └── ic_launcher_round.webp │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.webp │ │ │ ├── ic_launcher_foreground.webp │ │ │ └── ic_launcher_round.webp │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.webp │ │ │ ├── ic_launcher_foreground.webp │ │ │ └── ic_launcher_round.webp │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.webp │ │ │ ├── ic_launcher_foreground.webp │ │ │ └── ic_launcher_round.webp │ │ │ ├── values-night │ │ │ └── styles.xml │ │ │ └── values │ │ │ ├── ic_launcher_background.xml │ │ │ └── styles.xml │ │ └── profile │ │ └── AndroidManifest.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties └── settings.gradle ├── distribute_options.yaml ├── flutter_gen_error.txt ├── 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-50x50@1x.png │ │ │ ├── Icon-App-50x50@2x.png │ │ │ ├── Icon-App-57x57@1x.png │ │ │ ├── Icon-App-57x57@2x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-72x72@1x.png │ │ │ ├── Icon-App-72x72@2x.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 │ ├── BackgroundTask.swift │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── ChatService.swift │ ├── Dns.swift │ ├── Info.plist │ ├── Logger.swift │ ├── NetworkMonitor.swift │ ├── Runner-Bridging-Header.h │ └── Runner.entitlements ├── RunnerTests │ └── RunnerTests.swift └── ShareExtension │ ├── Base.lproj │ └── MainInterface.storyboard │ ├── Info.plist │ ├── ShareExtension.entitlements │ └── ShareViewController.swift ├── lib ├── about_page.dart ├── api │ ├── api.dart │ ├── chat_server.dart │ ├── chat_service.dart │ ├── config.dart │ ├── contacts.dart │ ├── dns.dart │ ├── notification.dart │ ├── send_chat.dart │ ├── socket.dart │ └── user_avatar.dart ├── app.dart ├── assets │ └── images │ │ ├── apple_store.png │ │ ├── back.png │ │ ├── background.jpg │ │ ├── default-profile-ai.png │ │ ├── default-profile.png │ │ ├── google.png │ │ ├── google_dark.png │ │ ├── google_dark.svg │ │ ├── google_light.png │ │ ├── google_light.svg │ │ ├── google_play.png │ │ ├── ic_file.png │ │ ├── ic_send.png │ │ ├── logo-white-bg.jpeg │ │ ├── status-90.png │ │ ├── tailchat.png │ │ ├── tailchat1024.png │ │ └── tailchat_macos_512x512.png ├── contacts_page.dart ├── first_launch_page.dart ├── gen │ └── l10n │ │ ├── app_localizations.dart │ │ └── app_localizations_en.dart ├── home_page.dart ├── intro_page.dart ├── l10n │ └── app_en.arb ├── main.dart ├── models │ ├── alert.dart │ ├── api │ │ ├── controller.dart │ │ ├── controller.g.dart │ │ ├── error_code.dart │ │ ├── status.dart │ │ ├── token.dart │ │ ├── token_change.dart │ │ ├── token_state.dart │ │ ├── unauthenticated_exception.dart │ │ ├── update_user_info.dart │ │ ├── update_user_info.g.dart │ │ └── user_avatar_change_event.dart │ ├── chat │ │ ├── chat_db.dart │ │ ├── chat_event.dart │ │ ├── chat_id.dart │ │ ├── chat_message.dart │ │ ├── chat_send_peers_result.dart │ │ ├── chat_session.dart │ │ ├── chat_storage.dart │ │ └── waiting_file.dart │ ├── client_info.dart │ ├── config │ │ └── config_change_event.dart │ ├── contacts │ │ ├── contact.dart │ │ ├── contacts_repository.dart │ │ ├── contacts_storage.dart │ │ ├── device.dart │ │ └── user_profile.dart │ ├── delete_friend_event.dart │ ├── delete_session_notifier.dart │ ├── ext_date_time.dart │ ├── friend_info.dart │ ├── friend_request_info.dart │ ├── friends.dart │ ├── has_friend_request_change_event.dart │ ├── image_resize.dart │ ├── log_file.dart │ ├── media_preview_item.dart │ ├── new_session_notifier.dart │ ├── new_video_call_notifier.dart │ ├── paging_controller.dart │ ├── progress_change_event.dart │ ├── qr_one_time_token.dart │ ├── session.dart │ ├── session_event.dart │ ├── session_storage.dart │ ├── theme_change_event.dart │ ├── ui_event.dart │ └── user_enum.dart ├── receive_share_page.dart ├── sessions_page.dart ├── status_page.dart ├── theme_page.dart ├── utils │ ├── global.dart │ ├── logger.dart │ └── utils.dart └── widgets │ ├── add_session_widget.dart │ ├── alert_chip.dart │ ├── alert_dialog_widget.dart │ ├── base_input │ ├── button.dart │ ├── company_name_input.dart │ ├── decoration.dart │ ├── email_input.dart │ ├── ink_well_button.dart │ ├── list_picker.dart │ ├── name_input.dart │ ├── text_input.dart │ └── user_agreement.dart │ ├── chat │ ├── add_group_chat.dart │ ├── add_user_chat.dart │ ├── app_bar.dart │ ├── attachments.dart │ ├── chat_group_management_page.dart │ ├── chat_page.dart │ ├── custom_message.dart │ ├── file_manager_page.dart │ ├── last_chat.dart │ ├── user_status.dart │ └── voice_recording.dart │ ├── common_widgets.dart │ ├── constants.dart │ ├── contacts │ ├── contact_details_page.dart │ ├── contact_dialog.dart │ ├── contact_list.dart │ ├── device_dialog.dart │ ├── hostname_change_dialog.dart │ ├── network_monitor.dart │ ├── user_avatar.dart │ ├── user_profile_header.dart │ └── user_profile_input.dart │ ├── contacts_icon.dart │ ├── device │ └── peer_popup_menu_item.dart │ ├── dialog_action.dart │ ├── gradient_card.dart │ ├── main_app_bar.dart │ ├── main_bottom_bar.dart │ ├── main_button.dart │ ├── main_drawer.dart │ ├── main_navigation_rail.dart │ ├── paged_list.dart │ ├── player.dart │ ├── qrcode │ └── qr_code_image.dart │ ├── request_note.dart │ ├── scroll_controller_with_arrow_keys.dart │ ├── search_widget.dart │ ├── session_feature_button.dart │ ├── session_list.dart │ ├── session_widget.dart │ ├── sessions_icon.dart │ ├── setting │ ├── account_and_settings_page.dart │ ├── advanced_settings_widget.dart │ ├── appearance_settings.dart │ ├── ar_mode.dart │ ├── chat_simple_ui.dart │ ├── config_switch.dart │ ├── setting_app_bar.dart │ ├── settings_page.dart │ ├── settings_widget.dart │ ├── text_scale.dart │ ├── theme_setting_widget.dart │ └── tv_mode.dart │ ├── shake_widget.dart │ ├── share_preview.dart │ ├── slider.dart │ ├── snackbar_widget.dart │ ├── stack_icons.dart │ ├── stack_with.dart │ ├── stack_with_status.dart │ ├── status_widget.dart │ ├── tab_bar_widget.dart │ ├── theme.dart │ ├── time_text.dart │ ├── top_row.dart │ ├── tv │ ├── background.dart │ ├── caption.dart │ ├── end_drawer_button.dart │ ├── icon_button.dart │ ├── left_side.dart │ ├── menu_button.dart │ └── return_button.dart │ ├── url_link.dart │ ├── user │ ├── policy_widget.dart │ ├── select_users.dart │ ├── select_users_page.dart │ ├── self_user_avatar.dart │ ├── user_agreement.dart │ ├── user_avatar.dart │ ├── user_card.dart │ ├── user_chat_button.dart │ └── user_widget.dart │ └── will_pop_widget.dart ├── linux ├── .gitignore ├── CMakeLists.txt ├── flutter │ ├── CMakeLists.txt │ ├── generated_plugin_registrant.cc │ ├── generated_plugin_registrant.h │ └── generated_plugins.cmake ├── packaging │ ├── debian │ │ ├── changelog │ │ ├── control │ │ ├── install.sh │ │ ├── rules │ │ └── tailchatd.service │ ├── make_config.yaml │ ├── tailchat.desktop │ └── tailchat.png └── runner │ ├── CMakeLists.txt │ ├── main.cc │ ├── my_application.cc │ └── my_application.h ├── macos ├── .gitignore ├── Flutter │ ├── Flutter-Debug.xcconfig │ ├── Flutter-Release.xcconfig │ └── GeneratedPluginRegistrant.swift ├── Podfile ├── Podfile.lock ├── 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 │ │ └── Contents.json │ ├── Base.lproj │ │ └── MainMenu.xib │ ├── Configs │ │ ├── AppInfo.xcconfig │ │ ├── Debug.xcconfig │ │ ├── Release.xcconfig │ │ └── Warnings.xcconfig │ ├── DebugProfile.entitlements │ ├── Info.plist │ ├── MainFlutterWindow.swift │ └── Release.entitlements └── RunnerTests │ └── RunnerTests.swift ├── plugins ├── cylonix_emojis │ ├── .gitignore │ ├── .metadata │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── analysis_options.yaml │ ├── lib │ │ ├── assets │ │ │ ├── aixin.png │ │ │ ├── aixin1.png │ │ │ ├── aoman.png │ │ │ ├── aoman1.png │ │ │ ├── baiyan.png │ │ │ ├── baiyan1.png │ │ │ ├── baoquan.png │ │ │ ├── baoquan1.png │ │ │ ├── bianbian.png │ │ │ ├── bianbian1.png │ │ │ ├── bishi.png │ │ │ ├── bishi1.png │ │ │ ├── bizui.png │ │ │ ├── bizui1.png │ │ │ ├── cahan.png │ │ │ ├── caidao.png │ │ │ ├── caidao1.png │ │ │ ├── chigua.png │ │ │ ├── ciya.png │ │ │ ├── ciya1.png │ │ │ ├── daku.png │ │ │ ├── daku1.png │ │ │ ├── dalian.png │ │ │ ├── dangao.png │ │ │ ├── dangao1.png │ │ │ ├── deyi.png │ │ │ ├── deyi1.png │ │ │ ├── diaoxie.png │ │ │ ├── diaoxie1.png │ │ │ ├── emm.png │ │ │ ├── fa.png │ │ │ ├── fadai.png │ │ │ ├── fadai1.png │ │ │ ├── fadou.png │ │ │ ├── fadou1.png │ │ │ ├── fanu.png │ │ │ ├── fanu1.png │ │ │ ├── fendou.png │ │ │ ├── fu.png │ │ │ ├── ganga.png │ │ │ ├── ganga1.png │ │ │ ├── gouyin.png │ │ │ ├── gouyin1.png │ │ │ ├── guzhang.png │ │ │ ├── guzhang1.png │ │ │ ├── haixiu.png │ │ │ ├── haixiu1.png │ │ │ ├── han.png │ │ │ ├── han1.png │ │ │ ├── hanxiao.png │ │ │ ├── hanxiao1.png │ │ │ ├── haode.png │ │ │ ├── haqian.png │ │ │ ├── hehe.png │ │ │ ├── hehe1.png │ │ │ ├── heiha.png │ │ │ ├── hongbao.png │ │ │ ├── huaixiao.png │ │ │ ├── huaixiao1.png │ │ │ ├── ji.png │ │ │ ├── jianxiao.png │ │ │ ├── jiayou.png │ │ │ ├── jiayoujiayou.png │ │ │ ├── jingkong.png │ │ │ ├── jingkong1.png │ │ │ ├── jingya.png │ │ │ ├── jingya1.png │ │ │ ├── jiong.png │ │ │ ├── jiong1.png │ │ │ ├── jizhi.png │ │ │ ├── kafei.png │ │ │ ├── kafei1.png │ │ │ ├── kelian.png │ │ │ ├── kelian1.png │ │ │ ├── koubi.png │ │ │ ├── koubi1.png │ │ │ ├── kuaikule.png │ │ │ ├── kuaikule1.png │ │ │ ├── kulou.png │ │ │ ├── kulou1.png │ │ │ ├── kun.png │ │ │ ├── kun1.png │ │ │ ├── lazhu.png │ │ │ ├── liuhan.png │ │ │ ├── liulei.png │ │ │ ├── liulei1.png │ │ │ ├── liwu.png │ │ │ ├── meigui.png │ │ │ ├── meigui1.png │ │ │ ├── nanguo.png │ │ │ ├── nanguo1.png │ │ │ ├── ohuo.png │ │ │ ├── ok.png │ │ │ ├── ok1.png │ │ │ ├── piezui.png │ │ │ ├── piezui1.png │ │ │ ├── pijiu.png │ │ │ ├── pijiu1.png │ │ │ ├── qiang.png │ │ │ ├── qiang1.png │ │ │ ├── qiaoda.png │ │ │ ├── qiaoda1.png │ │ │ ├── qinqin.png │ │ │ ├── qinqin1.png │ │ │ ├── quantou.png │ │ │ ├── quantou1.png │ │ │ ├── ruo.png │ │ │ ├── ruo1.png │ │ │ ├── se.png │ │ │ ├── se1.png │ │ │ ├── shehuishehui.png │ │ │ ├── shengli.png │ │ │ ├── shengli1.png │ │ │ ├── shui.png │ │ │ ├── shui1.png │ │ │ ├── sui.png │ │ │ ├── sui1.png │ │ │ ├── taiyang.png │ │ │ ├── taiyang1.png │ │ │ ├── tiana.png │ │ │ ├── tiaopi.png │ │ │ ├── tiaopi1.png │ │ │ ├── tiaotiao.png │ │ │ ├── tiaotiao1.png │ │ │ ├── touxiao.png │ │ │ ├── touxiao1.png │ │ │ ├── tu.png │ │ │ ├── tu1.png │ │ │ ├── wa.png │ │ │ ├── wangchai.png │ │ │ ├── weiqu.png │ │ │ ├── weiqu1.png │ │ │ ├── woshou.png │ │ │ ├── woshou1.png │ │ │ ├── wulian.png │ │ │ ├── xigua.png │ │ │ ├── xinsui.png │ │ │ ├── xinsui1.png │ │ │ ├── xu.png │ │ │ ├── xu1.png │ │ │ ├── ye.png │ │ │ ├── yinxian.png │ │ │ ├── yinxian1.png │ │ │ ├── yiwen.png │ │ │ ├── yiwen1.png │ │ │ ├── yongbao.png │ │ │ ├── yongbao1.png │ │ │ ├── youhengheng.png │ │ │ ├── youhengheng1.png │ │ │ ├── youxian.png │ │ │ ├── youxian1.png │ │ │ ├── yueliang.png │ │ │ ├── yueliang1.png │ │ │ ├── yukuai.png │ │ │ ├── yukuai1.png │ │ │ ├── yun.png │ │ │ ├── yun1.png │ │ │ ├── zaininmadejian.png │ │ │ ├── zaininmadejian1.png │ │ │ ├── zhadan.png │ │ │ ├── zhadan1.png │ │ │ ├── zhouma.png │ │ │ ├── zhouma1.png │ │ │ ├── zhoumei.png │ │ │ ├── zhuakuang.png │ │ │ ├── zhuakuang1.png │ │ │ ├── zhuanquan.png │ │ │ ├── zhuanquan1.png │ │ │ ├── zhutou.png │ │ │ ├── zhutou1.png │ │ │ ├── zuichun.png │ │ │ ├── zuichun1.png │ │ │ └── zuohengheng.png │ │ ├── cylonix_emojis.dart │ │ └── src │ │ │ ├── models │ │ │ ├── emoji.dart │ │ │ ├── emoji_list.dart │ │ │ └── recent_emoji.dart │ │ │ ├── utils.dart │ │ │ └── widgets │ │ │ └── select_emoji.dart │ ├── pubspec.yaml │ └── test │ │ └── cylonix_emojis_test.dart ├── flutter_audio_desktop │ ├── .gitignore │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── audioplayer │ │ ├── audioplayer.hpp │ │ ├── internal │ │ │ ├── audiodevices.hpp │ │ │ └── callbacks.hpp │ │ ├── main.cpp │ │ └── miniaudio │ │ │ └── miniaudio.h │ ├── example │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── README.md │ │ ├── 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 │ │ ├── pubspec.lock │ │ ├── pubspec.yaml │ │ └── windows │ │ │ ├── .gitignore │ │ │ ├── CMakeLists.txt │ │ │ ├── flutter │ │ │ ├── .template_version │ │ │ ├── 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 │ │ │ ├── run_loop.cpp │ │ │ ├── run_loop.h │ │ │ ├── runner.exe.manifest │ │ │ ├── utils.cpp │ │ │ ├── utils.h │ │ │ ├── win32_window.cpp │ │ │ └── win32_window.h │ ├── lib │ │ ├── flutter_audio_desktop.dart │ │ └── source │ │ │ ├── core │ │ │ ├── channel.dart │ │ │ ├── devices.dart │ │ │ └── events.dart │ │ │ ├── main.dart │ │ │ └── types │ │ │ ├── audio.dart │ │ │ └── source.dart │ ├── linux │ │ ├── CMakeLists.txt │ │ ├── flutter_audio_desktop_plugin.cc │ │ └── include │ │ │ └── flutter_audio_desktop │ │ │ ├── flutter_audio_desktop_plugin.h │ │ │ └── flutter_types.hpp │ ├── pubspec.lock │ ├── pubspec.yaml │ └── windows │ │ ├── .gitignore │ │ ├── CMakeLists.txt │ │ ├── flutter_audio_desktop_plugin.cpp │ │ └── include │ │ └── flutter_audio_desktop │ │ ├── flutter_audio_desktop_plugin.h │ │ └── flutter_types.hpp ├── flutter_chat_types │ ├── .gitignore │ ├── .metadata │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── analysis_options.yaml │ ├── android │ │ ├── .gitignore │ │ ├── AndroidManifest.xml │ │ ├── app │ │ │ └── src │ │ │ │ └── main │ │ │ │ └── java │ │ │ │ └── io │ │ │ │ └── flutter │ │ │ │ └── plugins │ │ │ │ └── GeneratedPluginRegistrant.java │ │ └── src │ │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ └── kotlin │ │ │ └── com │ │ │ └── example │ │ │ └── flutter_chat_types │ │ │ └── FlutterChatTypesPlugin.kt │ ├── example │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── android │ │ │ ├── .gitignore │ │ │ ├── app │ │ │ │ └── src │ │ │ │ │ ├── debug │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ ├── main │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ ├── kotlin │ │ │ │ │ │ └── com │ │ │ │ │ │ │ └── example │ │ │ │ │ │ │ └── flutter_chat_types_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 │ │ │ ├── gradle.properties │ │ │ └── gradle │ │ │ │ └── wrapper │ │ │ │ └── gradle-wrapper.properties │ │ ├── lib │ │ │ └── main.dart │ │ ├── pubspec.lock │ │ ├── pubspec.yaml │ │ └── test │ │ │ └── widget_test.dart │ ├── lib │ │ ├── flutter_chat_types.dart │ │ └── src │ │ │ ├── message.dart │ │ │ ├── messages │ │ │ ├── custom_message.dart │ │ │ ├── custom_message.g.dart │ │ │ ├── delete_message.dart │ │ │ ├── delete_message.g.dart │ │ │ ├── emoji_message.dart │ │ │ ├── emoji_message.g.dart │ │ │ ├── file_message.dart │ │ │ ├── file_message.g.dart │ │ │ ├── image_message.dart │ │ │ ├── image_message.g.dart │ │ │ ├── partial_custom.dart │ │ │ ├── partial_custom.g.dart │ │ │ ├── partial_file.dart │ │ │ ├── partial_file.g.dart │ │ │ ├── partial_image.dart │ │ │ ├── partial_image.g.dart │ │ │ ├── partial_text.dart │ │ │ ├── partial_text.g.dart │ │ │ ├── text_message.dart │ │ │ ├── text_message.g.dart │ │ │ ├── unsupported_message.dart │ │ │ └── unsupported_message.g.dart │ │ │ ├── preview_data.dart │ │ │ ├── preview_data.g.dart │ │ │ ├── room.dart │ │ │ ├── room.g.dart │ │ │ ├── user.dart │ │ │ ├── user.g.dart │ │ │ └── util.dart │ └── pubspec.yaml ├── flutter_chat_ui │ ├── .github │ │ ├── ISSUE_TEMPLATE │ │ │ ├── ---bug-report.md │ │ │ ├── ---feature-request.md │ │ │ ├── ---questions---help.md │ │ │ └── config.yml │ │ ├── pull_request_template.md │ │ └── workflows │ │ │ └── build.yaml │ ├── .gitignore │ ├── .metadata │ ├── CHANGELOG.md │ ├── CODE_OF_CONDUCT.md │ ├── CONTRIBUTING.md │ ├── LICENSE │ ├── README.md │ ├── analysis_options.yaml │ ├── doc │ │ ├── advanced-usage.md │ │ ├── basic-usage.md │ │ ├── installation.md │ │ ├── localization.md │ │ ├── overview.md │ │ ├── themes.md │ │ └── types.md │ ├── example │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── android │ │ │ ├── .gitignore │ │ │ ├── AndroidManifest.xml │ │ │ ├── app │ │ │ │ └── src │ │ │ │ │ ├── debug │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ ├── main │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ ├── kotlin │ │ │ │ │ │ └── com │ │ │ │ │ │ │ └── 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 │ │ │ ├── gradle.properties │ │ │ └── gradle │ │ │ │ └── wrapper │ │ │ │ └── gradle-wrapper.properties │ │ ├── assets │ │ │ └── messages.json │ │ ├── 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 │ │ ├── pubspec.yaml │ │ └── web │ │ │ ├── favicon.png │ │ │ ├── icons │ │ │ ├── Icon-192.png │ │ │ ├── Icon-512.png │ │ │ ├── Icon-maskable-192.png │ │ │ └── Icon-maskable-512.png │ │ │ ├── index.html │ │ │ └── manifest.json │ ├── lib │ │ ├── assets │ │ │ ├── 2.0x │ │ │ │ ├── icon-attachment.png │ │ │ │ ├── icon-delivered.png │ │ │ │ ├── icon-document.png │ │ │ │ ├── icon-error.png │ │ │ │ ├── icon-reply.png │ │ │ │ ├── icon-seen.png │ │ │ │ ├── icon-send.png │ │ │ │ └── icon-x.png │ │ │ ├── 3.0x │ │ │ │ ├── icon-attachment.png │ │ │ │ ├── icon-delivered.png │ │ │ │ ├── icon-document.png │ │ │ │ ├── icon-error.png │ │ │ │ ├── icon-reply.png │ │ │ │ ├── icon-seen.png │ │ │ │ ├── icon-send.png │ │ │ │ └── icon-x.png │ │ │ ├── icon-attachment.png │ │ │ ├── icon-delivered.png │ │ │ ├── icon-document.png │ │ │ ├── icon-error.png │ │ │ ├── icon-reply.png │ │ │ ├── icon-seen.png │ │ │ ├── icon-send.png │ │ │ └── icon-x.png │ │ ├── flutter_chat_ui.dart │ │ └── src │ │ │ ├── chat_l10n.dart │ │ │ ├── chat_theme.dart │ │ │ ├── conditional │ │ │ ├── base_conditional.dart │ │ │ ├── browser_conditional.dart │ │ │ ├── conditional.dart │ │ │ ├── conditional_stub.dart │ │ │ └── io_conditional.dart │ │ │ ├── models │ │ │ ├── date_header.dart │ │ │ ├── emoji_enlargement_behavior.dart │ │ │ ├── message_spacer.dart │ │ │ ├── preview_image.dart │ │ │ └── send_button_visibility_mode.dart │ │ │ ├── util.dart │ │ │ └── widgets │ │ │ ├── attachment_button.dart │ │ │ ├── chat.dart │ │ │ ├── chat_list.dart │ │ │ ├── emoji_message.dart │ │ │ ├── file_message.dart │ │ │ ├── image_message.dart │ │ │ ├── inherited_chat_theme.dart │ │ │ ├── inherited_l10n.dart │ │ │ ├── inherited_user.dart │ │ │ ├── input.dart │ │ │ ├── message.dart │ │ │ ├── reply_message.dart │ │ │ ├── send_button.dart │ │ │ ├── text.dart │ │ │ ├── text_message.dart │ │ │ └── voice_recording.dart │ ├── pubspec.yaml │ └── test │ │ ├── file_message.test.dart │ │ ├── flutter_chat_ui_test.dart │ │ ├── image_message.test.dart │ │ ├── input.test.dart │ │ ├── text_message.test.dart │ │ └── util.test.dart ├── flutter_link_previewer │ ├── .gitignore │ ├── .metadata │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── analysis_options.yaml │ ├── example │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── android │ │ │ ├── .gitignore │ │ │ ├── app │ │ │ │ └── src │ │ │ │ │ ├── debug │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ ├── main │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ ├── kotlin │ │ │ │ │ │ └── com │ │ │ │ │ │ │ └── example │ │ │ │ │ │ │ └── flutter_link_previewer_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 │ │ │ ├── gradle.properties │ │ │ └── gradle │ │ │ │ └── wrapper │ │ │ │ └── gradle-wrapper.properties │ │ ├── lib │ │ │ └── main.dart │ │ ├── pubspec.lock │ │ ├── pubspec.yaml │ │ └── test │ │ │ └── widget_test.dart │ ├── lib │ │ ├── flutter_link_previewer.dart │ │ └── src │ │ │ ├── types.dart │ │ │ ├── url_linkifier.dart │ │ │ ├── utils.dart │ │ │ └── widgets │ │ │ └── link_preview.dart │ ├── pubspec.yaml │ └── test │ │ └── flutter_link_previewer_test.dart └── flutter_logger │ ├── .gitattributes │ ├── .gitignore │ ├── .metadata │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── example │ ├── .gitignore │ ├── .metadata │ ├── lib │ │ └── main.dart │ └── pubspec.yaml │ ├── lib │ ├── flutter_logger.dart │ └── src │ │ ├── ansi_parser.dart │ │ ├── log_console.dart │ │ ├── log_console_on_shake.dart │ │ └── shake_detector.dart │ └── pubspec.yaml ├── pnserver ├── .env.example ├── Dockerfile ├── Makefile ├── README.md ├── docker-compose.yml ├── go.mod ├── go.sum ├── main.go ├── pnserver.go └── types.go ├── pubspec.lock ├── pubspec.yaml ├── tailchatd ├── go.mod ├── go.sum ├── main.go └── network.go ├── 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 /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "java.configuration.updateBuildConfiguration": "interactive", 3 | "cSpell.words": [ 4 | "CGNAT", 5 | "Cupertino", 6 | "cylonix", 7 | "EZBLOCK", 8 | "Iface", 9 | "neterr", 10 | "netlink", 11 | "prefs", 12 | "Schyler", 13 | "Tailchat", 14 | "tailchatd" 15 | ] 16 | } -------------------------------------------------------------------------------- /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/to/reference-keystore 11 | key.properties 12 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/android/app/src/main/ic_launcher-playstore.png -------------------------------------------------------------------------------- /android/app/src/main/kotlin/io/cylonix/tailchat/NetworkError.kt: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | package io.cylonix.tailchat 5 | 6 | sealed class NetworkError : Exception() { 7 | object AddressNotFound : NetworkError() 8 | object DNSResolutionFailed : NetworkError() 9 | data class Unknown(override val cause: Throwable) : NetworkError() 10 | 11 | companion object { 12 | fun fromException(e: Exception): NetworkError { 13 | return when (e) { 14 | is NetworkError -> e 15 | else -> Unknown(e) 16 | } 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-anydpi/launch_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/android/app/src/main/res/drawable-anydpi/launch_image.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #A8A6A6 4 | -------------------------------------------------------------------------------- /android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:+HeapDumpOnOutOfMemoryError 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /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-8.4-all.zip -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | def flutterSdkPath = { 3 | def properties = new Properties() 4 | file("local.properties").withInputStream { properties.load(it) } 5 | def flutterSdkPath = properties.getProperty("flutter.sdk") 6 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 7 | return flutterSdkPath 8 | }() 9 | 10 | includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") 11 | 12 | repositories { 13 | google() 14 | mavenCentral() 15 | gradlePluginPortal() 16 | } 17 | } 18 | 19 | plugins { 20 | id "dev.flutter.flutter-plugin-loader" version "1.0.0" 21 | id "com.android.application" version "8.3.1" apply false 22 | id "org.jetbrains.kotlin.android" version "1.8.22" apply false 23 | } 24 | 25 | include ":app" 26 | -------------------------------------------------------------------------------- /distribute_options.yaml: -------------------------------------------------------------------------------- 1 | output: dist/ 2 | releases: 3 | - name: dev 4 | jobs: 5 | - name: release-dev-linux-deb 6 | package: 7 | platform: linux 8 | target: deb 9 | build_args: 10 | enable-experiment: records -------------------------------------------------------------------------------- /flutter_gen_error.txt: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /ios/.gitignore: -------------------------------------------------------------------------------- 1 | **/dgph 2 | *.mode1v3 3 | *.mode2v3 4 | *.moved-aside 5 | *.pbxuser 6 | *.perspectivev3 7 | **/*sync/ 8 | .sconsign.dblite 9 | .tags* 10 | **/.vagrant/ 11 | **/DerivedData/ 12 | Icon? 13 | **/Pods/ 14 | **/.symlinks/ 15 | profile 16 | xcuserdata 17 | **/.generated/ 18 | Flutter/App.framework 19 | Flutter/Flutter.framework 20 | Flutter/Flutter.podspec 21 | Flutter/Generated.xcconfig 22 | Flutter/ephemeral/ 23 | Flutter/app.flx 24 | Flutter/app.zip 25 | Flutter/flutter_assets/ 26 | Flutter/flutter_export_environment.sh 27 | ServiceDefinitions.json 28 | Runner/GeneratedPluginRegistrant.* 29 | 30 | # Exceptions to above rules. 31 | !default.mode1v3 32 | !default.mode2v3 33 | !default.pbxuser 34 | !default.perspectivev3 35 | -------------------------------------------------------------------------------- /ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /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. -------------------------------------------------------------------------------- /ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /ios/Runner/Runner.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | aps-environment 6 | development 7 | com.apple.developer.associated-domains 8 | 9 | applinks:tailchat.cylonix.io 10 | 11 | com.apple.security.application-groups 12 | 13 | group.io.cylonix.tailchat 14 | group.io.cylonix.sase.ios 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /ios/ShareExtension/ShareExtension.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.application-groups 6 | 7 | group.io.cylonix.tailchat 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ios/ShareExtension/ShareViewController.swift: -------------------------------------------------------------------------------- 1 | // If you get no such module 'receive_sharing_intent' error. 2 | // Go to Build Phases of your Runner target and 3 | // move `Embed Foundation Extension` to the top of `Thin Binary`. 4 | import receive_sharing_intent 5 | 6 | class ShareViewController: RSIShareViewController { 7 | 8 | // Use this method to return false if you don't want to redirect to host app automatically. 9 | // Default is true 10 | override func shouldAutoRedirect() -> Bool { 11 | print("Tailchat: ShareViewController: shouldAutoRedirect") 12 | return true 13 | } 14 | 15 | } -------------------------------------------------------------------------------- /lib/assets/images/apple_store.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/lib/assets/images/apple_store.png -------------------------------------------------------------------------------- /lib/assets/images/back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/lib/assets/images/back.png -------------------------------------------------------------------------------- /lib/assets/images/background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/lib/assets/images/background.jpg -------------------------------------------------------------------------------- /lib/assets/images/default-profile-ai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/lib/assets/images/default-profile-ai.png -------------------------------------------------------------------------------- /lib/assets/images/default-profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/lib/assets/images/default-profile.png -------------------------------------------------------------------------------- /lib/assets/images/google.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/lib/assets/images/google.png -------------------------------------------------------------------------------- /lib/assets/images/google_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/lib/assets/images/google_dark.png -------------------------------------------------------------------------------- /lib/assets/images/google_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/lib/assets/images/google_light.png -------------------------------------------------------------------------------- /lib/assets/images/google_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/lib/assets/images/google_play.png -------------------------------------------------------------------------------- /lib/assets/images/ic_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/lib/assets/images/ic_file.png -------------------------------------------------------------------------------- /lib/assets/images/ic_send.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/lib/assets/images/ic_send.png -------------------------------------------------------------------------------- /lib/assets/images/logo-white-bg.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/lib/assets/images/logo-white-bg.jpeg -------------------------------------------------------------------------------- /lib/assets/images/status-90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/lib/assets/images/status-90.png -------------------------------------------------------------------------------- /lib/assets/images/tailchat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/lib/assets/images/tailchat.png -------------------------------------------------------------------------------- /lib/assets/images/tailchat1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/lib/assets/images/tailchat1024.png -------------------------------------------------------------------------------- /lib/assets/images/tailchat_macos_512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/lib/assets/images/tailchat_macos_512x512.png -------------------------------------------------------------------------------- /lib/main.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | import 'package:flutter/material.dart'; 5 | import 'app.dart'; 6 | 7 | void main() { 8 | runApp(const App()); 9 | } 10 | -------------------------------------------------------------------------------- /lib/models/api/token_change.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | import 'token.dart'; 5 | 6 | class TokenChangeEvent extends TokenEvent { 7 | final Token token; 8 | TokenChangeEvent({required this.token}) : super(); 9 | } 10 | 11 | class TokenRemoveEvent extends TokenEvent { 12 | TokenRemoveEvent() : super(); 13 | } 14 | 15 | class TokenInvalidEvent extends TokenEvent { 16 | TokenInvalidEvent() : super(); 17 | } 18 | 19 | class TokenEvent { 20 | TokenEvent(); 21 | } 22 | -------------------------------------------------------------------------------- /lib/models/api/token_state.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | import 'package:json_annotation/json_annotation.dart'; 5 | 6 | /// The generic qr code token state. 7 | @JsonEnum() 8 | enum TokenState { 9 | created, 10 | scanned, 11 | expired, 12 | confirmed, 13 | } 14 | -------------------------------------------------------------------------------- /lib/models/api/unauthenticated_exception.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | class UnauthenticatedException implements Exception { 5 | String msg; 6 | UnauthenticatedException(this.msg); 7 | } 8 | -------------------------------------------------------------------------------- /lib/models/api/user_avatar_change_event.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | import 'dart:typed_data'; 5 | 6 | class UserAvatarChangeEvent { 7 | final String userID; 8 | final Uint8List avatar; 9 | UserAvatarChangeEvent({required this.userID, required this.avatar}); 10 | } 11 | -------------------------------------------------------------------------------- /lib/models/delete_friend_event.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | class FriendDeleteEvent { 5 | int userId; 6 | FriendDeleteEvent(this.userId); 7 | } 8 | -------------------------------------------------------------------------------- /lib/models/delete_session_notifier.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | import 'package:flutter/material.dart'; 5 | import 'session.dart'; 6 | import '../utils/global.dart'; 7 | 8 | class DeleteSessionNotifier extends ChangeNotifier { 9 | Session? session; 10 | void add(Session deleteSession) { 11 | Global.logger.d("Delete session ${deleteSession.sessionID}"); 12 | session = deleteSession; 13 | notifyListeners(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /lib/models/ext_date_time.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | extension FileNameDateTime on DateTime { 5 | /// Replace '-, :, .' to '_' for filename usage. 6 | String toFilenameString() { 7 | var s = toIso8601String(); 8 | return s.replaceAll(RegExp(r'[-:\\.]'), '_'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /lib/models/has_friend_request_change_event.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | class HasFriendRequestChangeEvent { 5 | final bool hasRequest; 6 | HasFriendRequestChangeEvent({required this.hasRequest}); 7 | } 8 | -------------------------------------------------------------------------------- /lib/models/media_preview_item.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | import 'dart:io'; 5 | 6 | import 'package:flutter/material.dart'; 7 | import 'package:flutter/widgets.dart'; 8 | 9 | class MediaPreviewItem { 10 | int? id; 11 | final String path; 12 | String? caption; 13 | File? resource; 14 | bool isSelected; 15 | TextEditingController? controller; 16 | MediaPreviewItem({ 17 | this.id, 18 | required this.path, 19 | this.caption, 20 | this.resource, 21 | this.controller, 22 | this.isSelected = false, 23 | }); 24 | } 25 | -------------------------------------------------------------------------------- /lib/models/new_session_notifier.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | import 'package:flutter/material.dart'; 5 | import 'session.dart'; 6 | import '../utils/global.dart'; 7 | 8 | class NewSessionNotifier extends ChangeNotifier { 9 | Session? session; 10 | void add(Session newSession) { 11 | Global.logger.d("New session notifier: ${newSession.sessionID}"); 12 | session = newSession; 13 | notifyListeners(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /lib/models/new_video_call_notifier.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | import 'package:flutter/material.dart'; 5 | import 'contacts/user_profile.dart'; 6 | import '../utils/logger.dart'; 7 | 8 | class NewVideoCallNotifier extends ChangeNotifier { 9 | UserProfile? peer; 10 | void add(UserProfile newPeer) { 11 | Logger(tag: "NewVideoCallNotifier").d("new call to ${newPeer.name}"); 12 | peer = newPeer; 13 | notifyListeners(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /lib/models/progress_change_event.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | class ProgressChangeEvent { 5 | final String? chatID; 6 | final String messageID; 7 | final String? peer; 8 | final int bytes; 9 | final int total; 10 | final int time; // ms 11 | ProgressChangeEvent({ 12 | this.chatID, 13 | required this.messageID, 14 | this.peer, 15 | required this.bytes, 16 | required this.total, 17 | required this.time, 18 | }); 19 | @override 20 | String toString() { 21 | return "messageID=$messageID: $bytes/$total"; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/models/qr_one_time_token.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | import 'dart:convert'; 5 | 6 | class QrOneTimeToken { 7 | String? status; 8 | String? userAgent; 9 | String? token; 10 | QrOneTimeToken({ 11 | required this.token, 12 | this.userAgent, 13 | this.status, 14 | }); 15 | 16 | factory QrOneTimeToken.fromJson(Map json) { 17 | return QrOneTimeToken( 18 | userAgent: json['user_agent'], 19 | token: json['token'], 20 | status: json['status'], 21 | ); 22 | } 23 | 24 | Map toJson() { 25 | return { 26 | "status": status, 27 | 'user_agent': userAgent, 28 | 'token': token, 29 | }; 30 | } 31 | 32 | @override 33 | String toString() { 34 | return json.encode(this); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /lib/models/session_event.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | import 'session.dart'; 5 | 6 | abstract class SessionEvent { 7 | final Session? session; 8 | const SessionEvent({this.session}); 9 | } 10 | 11 | class SessionUpdateEvent extends SessionEvent { 12 | const SessionUpdateEvent(Session session) : super(session: session); 13 | } 14 | 15 | class SessionsSavedEvent extends SessionEvent { 16 | SessionsSavedEvent() : super(); 17 | } 18 | -------------------------------------------------------------------------------- /lib/models/theme_change_event.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | class ThemeChangeEvent { 5 | final int? themeIndex; 6 | final double? textScaleFactor; 7 | ThemeChangeEvent({this.themeIndex, this.textScaleFactor}); 8 | } 9 | -------------------------------------------------------------------------------- /lib/models/ui_event.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | abstract class UIEvent { 5 | UIEvent(); 6 | } 7 | 8 | class HomePageLoadingEvent extends UIEvent { 9 | final bool isLoading; 10 | final void Function()? onTimeout; 11 | HomePageLoadingEvent({ 12 | required this.isLoading, 13 | this.onTimeout, 14 | }) : super(); 15 | } 16 | -------------------------------------------------------------------------------- /lib/models/user_enum.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | enum UserEnum { org, personal } 5 | -------------------------------------------------------------------------------- /lib/utils/logger.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | import 'global.dart'; 5 | 6 | class Logger { 7 | final String tag; 8 | const Logger({required this.tag}); 9 | void d(String log) { 10 | Global.wrappedLogger.d("tailchat: $tag: $log"); 11 | } 12 | 13 | void w(String log) { 14 | Global.wrappedLogger.w("tailchat: $tag: $log"); 15 | } 16 | 17 | void i(String log) { 18 | Global.wrappedLogger.i("tailchat: $tag: $log"); 19 | } 20 | 21 | void e(String log) { 22 | Global.wrappedLogger.e("tailchat: $tag: $log"); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /lib/widgets/base_input/decoration.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | import 'package:flutter/material.dart'; 5 | import '../../api/config.dart'; 6 | 7 | extension BaseInputEdgeInsets on EdgeInsetsGeometry { 8 | static EdgeInsetsGeometry get padding { 9 | return EdgeInsets.symmetric( 10 | vertical: (Pst.enableAR ?? false) ? 0 : 8, 11 | horizontal: 8, 12 | ); 13 | } 14 | } 15 | 16 | extension BaseInputBorder on OutlineInputBorder { 17 | static OutlineInputBorder border({Color? color}) { 18 | return OutlineInputBorder( 19 | borderSide: color == null ? const BorderSide() : BorderSide(color: color), 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /lib/widgets/base_input/ink_well_button.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | import 'package:flutter/material.dart'; 5 | 6 | class InkWellButton extends StatelessWidget { 7 | final Widget? child; 8 | final Color? color; 9 | final void Function() onTap; 10 | const InkWellButton({super.key, this.child, this.color, required this.onTap}); 11 | @override 12 | Widget build(BuildContext context) { 13 | return Material( 14 | type: color == null ? MaterialType.transparency : MaterialType.button, 15 | color: color, 16 | child: InkWell(onTap: onTap, child: child), 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /lib/widgets/constants.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | const double loginPageMaxWidth = 960; 5 | const double featureButtonMinWidth = 120; 6 | -------------------------------------------------------------------------------- /lib/widgets/device/peer_popup_menu_item.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | import 'package:flutter/material.dart'; 5 | import 'package:sprintf/sprintf.dart'; 6 | import '../../models/contacts/device.dart'; 7 | import '../common_widgets.dart'; 8 | 9 | class PeerPopupMenuItem extends PopupMenuItem { 10 | // ignore: use_super_parameters 11 | PeerPopupMenuItem({ 12 | Key? key, 13 | required Device peer, 14 | bool online = true, 15 | }) : super( 16 | key: key, 17 | value: peer, 18 | child: ListTile( 19 | title: Text(sprintf("%-16s %s", [peer.address, peer.hostname])), 20 | leading: getOsOnlineIcon(peer.os, online), 21 | ), 22 | ); 23 | } 24 | -------------------------------------------------------------------------------- /lib/widgets/setting/setting_app_bar.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | import 'package:flutter/material.dart'; 5 | import '../../api/config.dart'; 6 | import '../../utils/utils.dart'; 7 | 8 | class SettingAppBar extends AppBar { 9 | SettingAppBar( 10 | BuildContext context, 11 | String title, { 12 | super.key, 13 | }) : super( 14 | title: Text(title), 15 | automaticallyImplyLeading: 16 | !(Pst.enableTV ?? false || isLargeScreen(context)), 17 | ); 18 | } 19 | -------------------------------------------------------------------------------- /lib/widgets/stack_icons.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | import 'package:flutter/material.dart'; 5 | 6 | class StackIcons extends SizedBox { 7 | StackIcons( 8 | IconData icon1, 9 | IconData icon2, { 10 | super.key, 11 | double? size, 12 | Color? color1, 13 | Color? color2, 14 | }) 15 | : super( 16 | height: size ?? 24, 17 | width: size ?? 24, 18 | child: Stack( 19 | alignment: Alignment.bottomLeft, 20 | children: [ 21 | Icon(icon1, size: (size ?? 24) * 0.8, color: color1), 22 | Positioned( 23 | right: 0, 24 | top: 0, 25 | child: Icon(icon2, size: (size ?? 24) * 0.6, color: color2), 26 | ), 27 | ], 28 | ), 29 | ); 30 | } 31 | -------------------------------------------------------------------------------- /lib/widgets/stack_with.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | import 'package:flutter/material.dart'; 5 | 6 | class StackWith extends Stack { 7 | StackWith({ 8 | super.key, 9 | required List bottom, 10 | required Widget top, 11 | required bool toStackOn, 12 | bool withModalBarrier = true, 13 | }) : super( 14 | children: [ 15 | ...bottom, 16 | if (toStackOn && withModalBarrier) 17 | const Opacity( 18 | opacity: 0.8, 19 | child: ModalBarrier(dismissible: false, color: Colors.black), 20 | ), 21 | if (toStackOn) top, 22 | ], 23 | ); 24 | } 25 | -------------------------------------------------------------------------------- /lib/widgets/top_row.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | import 'package:flutter/material.dart'; 5 | 6 | class TopRow extends Container { 7 | TopRow({ 8 | super.key, 9 | required Widget super.child, 10 | bool large = false, 11 | EdgeInsetsGeometry? padding, 12 | }) : super( 13 | padding: padding ?? EdgeInsets.only(top: large ? 100 : 50), 14 | constraints: BoxConstraints(minHeight: large ? 300 : 208), 15 | ); 16 | } 17 | -------------------------------------------------------------------------------- /lib/widgets/tv/background.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | import 'package:flutter/material.dart'; 5 | 6 | class Background extends Container { 7 | Background(BuildContext context, {super.key, super.child}) 8 | : super( 9 | decoration: BoxDecoration( 10 | color: Theme.of(context).cardColor, 11 | image: const DecorationImage( 12 | opacity: 0.8, 13 | image: AssetImage( 14 | "packages/sase_app_ui/assets/images/background.jpg", 15 | ), 16 | fit: BoxFit.cover, 17 | ), 18 | ), 19 | ); 20 | } 21 | -------------------------------------------------------------------------------- /lib/widgets/tv/caption.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | import 'package:flutter/material.dart'; 5 | 6 | class Caption extends Text { 7 | Caption(BuildContext context, super.text, {super.key}) 8 | : super( 9 | style: Theme.of(context).textTheme.titleLarge, 10 | textAlign: TextAlign.center, 11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /lib/widgets/tv/end_drawer_button.dart: -------------------------------------------------------------------------------- 1 | // Copyright (c) EZBLOCK Inc & AUTHORS 2 | // SPDX-License-Identifier: BSD-3-Clause 3 | 4 | import 'package:flutter/material.dart'; 5 | import '../../gen/l10n/app_localizations.dart'; 6 | import 'icon_button.dart'; 7 | 8 | class EndDrawerButton extends IconButtonWidget { 9 | EndDrawerButton({ 10 | super.key, 11 | required BuildContext context, 12 | }) : super( 13 | debugLabel: "end-drawer-button", 14 | icon: const Icon(Icons.settings), 15 | onPressed: () => Scaffold.of(context).openEndDrawer(), 16 | size: 48, 17 | tooltip: AppLocalizations.of(context).settingsTitle, 18 | ); 19 | } 20 | -------------------------------------------------------------------------------- /linux/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral 2 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /linux/packaging/debian/changelog: -------------------------------------------------------------------------------- 1 | tailchat (1.0.1-13-0) unstable; urgency=low 2 | 3 | * Initial release. 4 | 5 | -- Cylonix authors Thu, 13 Mar 2025 10:00:00 +0000 6 | -------------------------------------------------------------------------------- /linux/packaging/debian/control: -------------------------------------------------------------------------------- 1 | Source: tailchat 2 | Section: net 3 | Priority: optional 4 | Maintainer: EZBLOCK Authors 5 | Build-Depends: debhelper-compat (= 12) 6 | Standards-Version: 4.6.0 7 | Homepage: https://cylonix.io/web/view/product/tailchat.html 8 | Rules-Requires-Root: no 9 | 10 | Package: tailchat 11 | Architecture: amd64 12 | Description: Tailchat Application 13 | TaleChat provides point to point direct messaging between two tailnet nodes. 14 | -------------------------------------------------------------------------------- /linux/packaging/debian/tailchatd.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Tailchatd - WebSocket Chat Service 3 | After=network.target 4 | 5 | [Service] 6 | Type=simple 7 | WorkingDirectory=/opt/tailchatd 8 | ExecStart=/opt/tailchatd/tailchatd 9 | Restart=on-failure 10 | RestartSec=5 11 | 12 | [Install] 13 | WantedBy=multi-user.target -------------------------------------------------------------------------------- /linux/packaging/make_config.yaml: -------------------------------------------------------------------------------- 1 | display_name: Tailchat 2 | package_name: tailchat 3 | 4 | maintainer: 5 | name: EZBLOCK Authors 6 | email: contact@ezblock.io 7 | 8 | priority: optional 9 | 10 | section: x11 11 | 12 | installed_size: 57488 13 | 14 | dependencies: 15 | 16 | essential: false 17 | 18 | icon: android/app/src/main/res/mipmap-hdpi/ic_launcher.webp 19 | 20 | postuninstall_scripts: 21 | - echo "Sorry to see you go." 22 | 23 | keywords: 24 | - Secure Messaging 25 | - Peer to peer messaging 26 | - Tailscale 27 | - Tailnet 28 | 29 | generic_name: Secure Chat 30 | 31 | categories: 32 | - IM 33 | - Utility 34 | - Communication 35 | - Security 36 | - Privacy 37 | 38 | startup_notify: true -------------------------------------------------------------------------------- /linux/packaging/tailchat.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Tailchat 3 | Comment=Secure Prviate Chat 4 | Path=/opt/tailchat 5 | Exec=tailchat 6 | Icon=tailchat.png 7 | Terminal=false 8 | Type=Application 9 | StartupNotify=true -------------------------------------------------------------------------------- /linux/packaging/tailchat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/linux/packaging/tailchat.png -------------------------------------------------------------------------------- /linux/runner/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 | -------------------------------------------------------------------------------- /linux/runner/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 | -------------------------------------------------------------------------------- /macos/.gitignore: -------------------------------------------------------------------------------- 1 | # Flutter-related 2 | **/Flutter/ephemeral/ 3 | **/Pods/ 4 | 5 | # Xcode-related 6 | **/dgph 7 | **/xcuserdata/ 8 | -------------------------------------------------------------------------------- /macos/Flutter/Flutter-Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "ephemeral/Flutter-Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /macos/Flutter/Flutter-Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "ephemeral/Flutter-Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /macos/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /macos/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | @main 5 | class AppDelegate: FlutterAppDelegate { 6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { 7 | return true 8 | } 9 | 10 | override func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool { 11 | return true 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /macos/Runner/Configs/AppInfo.xcconfig: -------------------------------------------------------------------------------- 1 | // Application-level settings for the Runner target. 2 | // 3 | // This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the 4 | // future. If not, the values below would default to using the project name when this becomes a 5 | // 'flutter create' template. 6 | 7 | // The application's name. By default this is also the title of the Flutter window. 8 | PRODUCT_NAME = Tailchat 9 | 10 | // The application's bundle identifier 11 | PRODUCT_BUNDLE_IDENTIFIER = io.cylonix.tailchat 12 | 13 | // The copyright displayed in application information 14 | PRODUCT_COPYRIGHT = Copyright © 2024 io.cylonix. All rights reserved. 15 | -------------------------------------------------------------------------------- /macos/Runner/Configs/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Debug.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /macos/Runner/Configs/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Release.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /macos/Runner/Configs/Warnings.xcconfig: -------------------------------------------------------------------------------- 1 | WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings 2 | GCC_WARN_UNDECLARED_SELECTOR = YES 3 | CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES 4 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE 5 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES 6 | CLANG_WARN_PRAGMA_PACK = YES 7 | CLANG_WARN_STRICT_PROTOTYPES = YES 8 | CLANG_WARN_COMMA = YES 9 | GCC_WARN_STRICT_SELECTOR_MATCH = YES 10 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES 11 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES 12 | GCC_WARN_SHADOW = YES 13 | CLANG_WARN_UNREACHABLE_CODE = YES 14 | -------------------------------------------------------------------------------- /macos/Runner/DebugProfile.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.developer.shared-with-you.collaboration 6 | 7 | com.apple.security.app-sandbox 8 | 9 | com.apple.security.cs.allow-jit 10 | 11 | com.apple.security.device.audio-input 12 | 13 | com.apple.security.files.user-selected.read-write 14 | 15 | com.apple.security.network.client 16 | 17 | com.apple.security.network.server 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /macos/Runner/Release.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.developer.shared-with-you.collaboration 6 | 7 | com.apple.security.app-sandbox 8 | 9 | com.apple.security.device.audio-input 10 | 11 | com.apple.security.files.user-selected.read-write 12 | 13 | com.apple.security.network.client 14 | 15 | com.apple.security.network.server 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /macos/RunnerTests/RunnerTests.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 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 | -------------------------------------------------------------------------------- /plugins/cylonix_emojis/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | # Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. 25 | /pubspec.lock 26 | **/doc/api/ 27 | .dart_tool/ 28 | .packages 29 | build/ 30 | -------------------------------------------------------------------------------- /plugins/cylonix_emojis/.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: 5464c5bac742001448fe4fc0597be939379f88ea 8 | channel: stable 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /plugins/cylonix_emojis/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.0.1 2 | 3 | * TODO: Describe initial release. 4 | -------------------------------------------------------------------------------- /plugins/cylonix_emojis/LICENSE: -------------------------------------------------------------------------------- 1 | TODO: Add your license here. 2 | -------------------------------------------------------------------------------- /plugins/cylonix_emojis/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 | -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/aixin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/aixin.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/aixin1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/aixin1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/aoman.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/aoman.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/aoman1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/aoman1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/baiyan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/baiyan.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/baiyan1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/baiyan1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/baoquan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/baoquan.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/baoquan1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/baoquan1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/bianbian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/bianbian.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/bianbian1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/bianbian1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/bishi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/bishi.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/bishi1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/bishi1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/bizui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/bizui.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/bizui1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/bizui1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/cahan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/cahan.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/caidao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/caidao.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/caidao1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/caidao1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/chigua.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/chigua.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/ciya.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/ciya.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/ciya1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/ciya1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/daku.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/daku.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/daku1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/daku1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/dalian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/dalian.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/dangao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/dangao.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/dangao1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/dangao1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/deyi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/deyi.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/deyi1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/deyi1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/diaoxie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/diaoxie.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/diaoxie1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/diaoxie1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/emm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/emm.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/fa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/fa.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/fadai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/fadai.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/fadai1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/fadai1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/fadou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/fadou.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/fadou1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/fadou1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/fanu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/fanu.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/fanu1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/fanu1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/fendou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/fendou.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/fu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/fu.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/ganga.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/ganga.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/ganga1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/ganga1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/gouyin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/gouyin.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/gouyin1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/gouyin1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/guzhang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/guzhang.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/guzhang1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/guzhang1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/haixiu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/haixiu.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/haixiu1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/haixiu1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/han.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/han.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/han1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/han1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/hanxiao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/hanxiao.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/hanxiao1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/hanxiao1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/haode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/haode.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/haqian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/haqian.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/hehe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/hehe.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/hehe1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/hehe1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/heiha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/heiha.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/hongbao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/hongbao.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/huaixiao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/huaixiao.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/huaixiao1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/huaixiao1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/ji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/ji.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/jianxiao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/jianxiao.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/jiayou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/jiayou.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/jiayoujiayou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/jiayoujiayou.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/jingkong.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/jingkong.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/jingkong1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/jingkong1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/jingya.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/jingya.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/jingya1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/jingya1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/jiong.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/jiong.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/jiong1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/jiong1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/jizhi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/jizhi.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/kafei.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/kafei.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/kafei1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/kafei1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/kelian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/kelian.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/kelian1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/kelian1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/koubi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/koubi.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/koubi1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/koubi1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/kuaikule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/kuaikule.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/kuaikule1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/kuaikule1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/kulou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/kulou.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/kulou1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/kulou1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/kun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/kun.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/kun1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/kun1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/lazhu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/lazhu.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/liuhan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/liuhan.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/liulei.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/liulei.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/liulei1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/liulei1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/liwu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/liwu.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/meigui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/meigui.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/meigui1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/meigui1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/nanguo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/nanguo.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/nanguo1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/nanguo1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/ohuo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/ohuo.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/ok.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/ok1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/ok1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/piezui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/piezui.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/piezui1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/piezui1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/pijiu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/pijiu.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/pijiu1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/pijiu1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/qiang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/qiang.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/qiang1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/qiang1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/qiaoda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/qiaoda.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/qiaoda1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/qiaoda1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/qinqin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/qinqin.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/qinqin1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/qinqin1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/quantou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/quantou.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/quantou1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/quantou1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/ruo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/ruo.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/ruo1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/ruo1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/se.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/se.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/se1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/se1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/shehuishehui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/shehuishehui.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/shengli.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/shengli.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/shengli1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/shengli1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/shui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/shui.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/shui1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/shui1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/sui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/sui.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/sui1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/sui1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/taiyang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/taiyang.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/taiyang1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/taiyang1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/tiana.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/tiana.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/tiaopi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/tiaopi.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/tiaopi1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/tiaopi1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/tiaotiao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/tiaotiao.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/tiaotiao1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/tiaotiao1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/touxiao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/touxiao.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/touxiao1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/touxiao1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/tu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/tu.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/tu1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/tu1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/wa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/wa.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/wangchai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/wangchai.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/weiqu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/weiqu.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/weiqu1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/weiqu1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/woshou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/woshou.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/woshou1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/woshou1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/wulian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/wulian.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/xigua.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/xigua.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/xinsui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/xinsui.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/xinsui1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/xinsui1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/xu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/xu.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/xu1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/xu1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/ye.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/ye.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/yinxian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/yinxian.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/yinxian1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/yinxian1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/yiwen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/yiwen.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/yiwen1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/yiwen1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/yongbao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/yongbao.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/yongbao1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/yongbao1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/youhengheng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/youhengheng.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/youhengheng1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/youhengheng1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/youxian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/youxian.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/youxian1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/youxian1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/yueliang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/yueliang.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/yueliang1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/yueliang1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/yukuai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/yukuai.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/yukuai1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/yukuai1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/yun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/yun.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/yun1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/yun1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/zaininmadejian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/zaininmadejian.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/zaininmadejian1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/zaininmadejian1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/zhadan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/zhadan.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/zhadan1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/zhadan1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/zhouma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/zhouma.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/zhouma1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/zhouma1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/zhoumei.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/zhoumei.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/zhuakuang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/zhuakuang.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/zhuakuang1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/zhuakuang1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/zhuanquan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/zhuanquan.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/zhuanquan1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/zhuanquan1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/zhutou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/zhutou.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/zhutou1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/zhutou1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/zuichun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/zuichun.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/zuichun1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/zuichun1.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/assets/zuohengheng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/cylonix_emojis/lib/assets/zuohengheng.png -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/cylonix_emojis.dart: -------------------------------------------------------------------------------- 1 | library cylonix_emojis; 2 | 3 | export 'src/widgets/select_emoji.dart'; 4 | export 'src/models/emoji_list.dart' show lookupByCode; 5 | -------------------------------------------------------------------------------- /plugins/cylonix_emojis/lib/src/models/recent_emoji.dart: -------------------------------------------------------------------------------- 1 | import 'emoji.dart'; 2 | 3 | /// Class that holds an recent emoji 4 | /// Recent Emoji has an instance of the emoji 5 | /// And a counter, which counts how often this emoji 6 | /// has been used before 7 | class RecentEmoji { 8 | /// Constructor 9 | RecentEmoji(this.emoji, this.counter); 10 | 11 | /// Emoji instance 12 | final Emoji emoji; 13 | 14 | /// Counter how often emoji has been used before 15 | int counter = 0; 16 | 17 | /// Parse RecentEmoji from json 18 | static RecentEmoji fromJson(dynamic json) { 19 | return RecentEmoji( 20 | Emoji.fromJson(json['emoji'] as Map), 21 | json['counter'] as int, 22 | ); 23 | } 24 | 25 | /// Encode RecentEmoji to json 26 | Map toJson() => { 27 | 'emoji': emoji, 28 | 'counter': counter, 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /plugins/cylonix_emojis/test/cylonix_emojis_test.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_test/flutter_test.dart'; 2 | 3 | void main() { 4 | test('adds one to input values', () {}); 5 | } 6 | -------------------------------------------------------------------------------- /plugins/flutter_audio_desktop/.gitignore: -------------------------------------------------------------------------------- 1 | # vscode 2 | 3 | .vscode 4 | 5 | # audio 6 | 7 | *.mp3 8 | 9 | # dart 10 | 11 | .dart_tool 12 | .packages 13 | 14 | # flutter 15 | 16 | .flutter-plugins 17 | .flutter-plugins-dependencies 18 | 19 | # miniaudio: https://github.com/mackron/miniaudio 20 | # Get miniaudio.h & miniaudio_engine.h from the link above & place at the following location. 21 | -------------------------------------------------------------------------------- /plugins/flutter_audio_desktop/example/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | **/doc/api/ 25 | **/ios/Flutter/.last_build_id 26 | .dart_tool/ 27 | .flutter-plugins 28 | .flutter-plugins-dependencies 29 | .packages 30 | .pub-cache/ 31 | .pub/ 32 | /build/ 33 | 34 | # Web related 35 | lib/generated_plugin_registrant.dart 36 | 37 | # Symbolication related 38 | app.*.symbols 39 | 40 | # Obfuscation related 41 | app.*.map.json 42 | -------------------------------------------------------------------------------- /plugins/flutter_audio_desktop/example/.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: ce40de69b7b4f89c66d19c8dbd3bd86ae30f1bc6 8 | channel: dev 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /plugins/flutter_audio_desktop/example/README.md: -------------------------------------------------------------------------------- 1 | # [flutter_audio_desktop_example](https://github.com/alexmercerind/flutter_audio_desktop) 2 | 3 | Demonstrates how to use the flutter_audio_desktop plugin. -------------------------------------------------------------------------------- /plugins/flutter_audio_desktop/example/linux/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral 2 | -------------------------------------------------------------------------------- /plugins/flutter_audio_desktop/example/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 | #include 10 | 11 | void fl_register_plugins(FlPluginRegistry* registry) { 12 | g_autoptr(FlPluginRegistrar) flutter_audio_desktop_registrar = 13 | fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterAudioDesktopPlugin"); 14 | flutter_audio_desktop_plugin_register_with_registrar(flutter_audio_desktop_registrar); 15 | } 16 | -------------------------------------------------------------------------------- /plugins/flutter_audio_desktop/example/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 | -------------------------------------------------------------------------------- /plugins/flutter_audio_desktop/example/linux/main.cc: -------------------------------------------------------------------------------- 1 | #include "my_application.h" 2 | 3 | int main(int argc, char** argv) { 4 | // Only X11 is currently supported. 5 | // Wayland support is being developed: https://github.com/flutter/flutter/issues/57932. 6 | gdk_set_allowed_backends("x11"); 7 | 8 | g_autoptr(MyApplication) app = my_application_new(); 9 | return g_application_run(G_APPLICATION(app), argc, argv); 10 | } 11 | -------------------------------------------------------------------------------- /plugins/flutter_audio_desktop/example/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 | -------------------------------------------------------------------------------- /plugins/flutter_audio_desktop/example/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: flutter_audio_desktop_example 2 | description: Demonstrates how to use the flutter_audio_desktop plugin. 3 | 4 | publish_to: 'none' 5 | 6 | environment: 7 | sdk: ^3.6.0 8 | 9 | dependencies: 10 | flutter: 11 | sdk: flutter 12 | 13 | flutter_audio_desktop: 14 | path: ../ 15 | 16 | dev_dependencies: 17 | flutter_test: 18 | sdk: flutter 19 | 20 | flutter: 21 | uses-material-design: true -------------------------------------------------------------------------------- /plugins/flutter_audio_desktop/example/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 | -------------------------------------------------------------------------------- /plugins/flutter_audio_desktop/example/windows/flutter/.template_version: -------------------------------------------------------------------------------- 1 | 7 2 | -------------------------------------------------------------------------------- /plugins/flutter_audio_desktop/example/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 | #include 10 | 11 | void RegisterPlugins(flutter::PluginRegistry* registry) { 12 | FlutterAudioDesktopPluginRegisterWithRegistrar( 13 | registry->GetRegistrarForPlugin("FlutterAudioDesktopPlugin")); 14 | } 15 | -------------------------------------------------------------------------------- /plugins/flutter_audio_desktop/example/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 | -------------------------------------------------------------------------------- /plugins/flutter_audio_desktop/example/windows/runner/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.15) 2 | project(runner LANGUAGES CXX) 3 | 4 | add_executable(${BINARY_NAME} WIN32 5 | "flutter_window.cpp" 6 | "main.cpp" 7 | "run_loop.cpp" 8 | "utils.cpp" 9 | "win32_window.cpp" 10 | "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" 11 | "Runner.rc" 12 | "runner.exe.manifest" 13 | ) 14 | apply_standard_settings(${BINARY_NAME}) 15 | target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") 16 | target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) 17 | target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") 18 | add_dependencies(${BINARY_NAME} flutter_assemble) 19 | -------------------------------------------------------------------------------- /plugins/flutter_audio_desktop/example/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 | -------------------------------------------------------------------------------- /plugins/flutter_audio_desktop/example/windows/runner/resources/app_icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_audio_desktop/example/windows/runner/resources/app_icon.ico -------------------------------------------------------------------------------- /plugins/flutter_audio_desktop/example/windows/runner/utils.cpp: -------------------------------------------------------------------------------- 1 | #include "utils.h" 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | 10 | void CreateAndAttachConsole() { 11 | if (::AllocConsole()) { 12 | FILE *unused; 13 | if (freopen_s(&unused, "CONOUT$", "w", stdout)) { 14 | _dup2(_fileno(stdout), 1); 15 | } 16 | if (freopen_s(&unused, "CONOUT$", "w", stderr)) { 17 | _dup2(_fileno(stdout), 2); 18 | } 19 | std::ios::sync_with_stdio(); 20 | FlutterDesktopResyncOutputStreams(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /plugins/flutter_audio_desktop/example/windows/runner/utils.h: -------------------------------------------------------------------------------- 1 | #ifndef RUNNER_UTILS_H_ 2 | #define RUNNER_UTILS_H_ 3 | 4 | // Creates a console for the process, and redirects stdout and stderr to 5 | // it for both the runner and the Flutter library. 6 | void CreateAndAttachConsole(); 7 | 8 | #endif // RUNNER_UTILS_H_ 9 | -------------------------------------------------------------------------------- /plugins/flutter_audio_desktop/lib/flutter_audio_desktop.dart: -------------------------------------------------------------------------------- 1 | export 'package:flutter_audio_desktop/source/main.dart'; 2 | export 'package:flutter_audio_desktop/source/types/source.dart'; 3 | export 'package:flutter_audio_desktop/source/types/audio.dart'; 4 | export 'package:flutter_audio_desktop/source/core/devices.dart'; 5 | 6 | const String title = "flutter_audio_desktop"; 7 | const String author = "alexmercerind"; 8 | const String license = "MIT"; 9 | const String version = "0.0.9"; 10 | -------------------------------------------------------------------------------- /plugins/flutter_audio_desktop/lib/source/core/channel.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/services.dart'; 2 | 3 | /// Internal method channel used by plugin. 4 | final MethodChannel channel = MethodChannel('flutter_audio_desktop'); 5 | -------------------------------------------------------------------------------- /plugins/flutter_audio_desktop/lib/source/types/audio.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | class Audio { 4 | /// Currently loaded [File]. 5 | File? file; 6 | 7 | /// Current playback state of audio player. 8 | bool isPlaying; 9 | 10 | /// Audio source completion state of audio player. 11 | bool isCompleted; 12 | 13 | /// Whether an [AudioSource] is loaded or not. 14 | bool isStopped; 15 | 16 | /// Current position of playback in [Duration]. 17 | Duration position; 18 | 19 | /// [Duration] of currently loaded audio source. 20 | Duration duration; 21 | 22 | Audio({ 23 | this.file, 24 | this.isPlaying = false, 25 | this.isStopped = true, 26 | this.isCompleted = false, 27 | this.position = Duration.zero, 28 | this.duration = Duration.zero, 29 | }); 30 | } 31 | -------------------------------------------------------------------------------- /plugins/flutter_audio_desktop/linux/include/flutter_audio_desktop/flutter_audio_desktop_plugin.h: -------------------------------------------------------------------------------- 1 | #ifndef FLUTTER_PLUGIN_FLUTTER_AUDIO_DESKTOP_PLUGIN_H_ 2 | #define FLUTTER_PLUGIN_FLUTTER_AUDIO_DESKTOP_PLUGIN_H_ 3 | 4 | #include 5 | 6 | G_BEGIN_DECLS 7 | 8 | #ifdef FLUTTER_PLUGIN_IMPL 9 | #define FLUTTER_PLUGIN_EXPORT __attribute__((visibility("default"))) 10 | #else 11 | #define FLUTTER_PLUGIN_EXPORT 12 | #endif 13 | 14 | typedef struct _FlutterAudioDesktopPlugin FlutterAudioDesktopPlugin; 15 | typedef struct { 16 | GObjectClass parent_class; 17 | } FlutterAudioDesktopPluginClass; 18 | 19 | FLUTTER_PLUGIN_EXPORT GType flutter_audio_desktop_plugin_get_type(); 20 | 21 | FLUTTER_PLUGIN_EXPORT void flutter_audio_desktop_plugin_register_with_registrar( 22 | FlPluginRegistrar* registrar); 23 | 24 | G_END_DECLS 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /plugins/flutter_audio_desktop/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: flutter_audio_desktop 2 | description: An audio playback library for Flutter Desktop. Supports Windows & Linux. Based on miniaudio. 3 | version: 0.1.0 4 | homepage: https://github.com/alexmercerind/flutter_audio_desktop 5 | repository: https://github.com/alexmercerind/flutter_audio_desktop 6 | documentation: https://github.com/alexmercerind/flutter_audio_desktop/blob/master/README.md 7 | 8 | environment: 9 | sdk: ">=2.14.0 <3.0.0" 10 | flutter: ">=1.17.0" 11 | 12 | dependencies: 13 | flutter: 14 | sdk: flutter 15 | path: ^1.7.0 16 | path_provider: ^2.0.0 17 | 18 | dev_dependencies: 19 | flutter_test: 20 | sdk: flutter 21 | flutter: 22 | plugin: 23 | platforms: 24 | linux: 25 | pluginClass: FlutterAudioDesktopPlugin 26 | windows: 27 | pluginClass: FlutterAudioDesktopPlugin -------------------------------------------------------------------------------- /plugins/flutter_audio_desktop/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 | -------------------------------------------------------------------------------- /plugins/flutter_audio_desktop/windows/include/flutter_audio_desktop/flutter_audio_desktop_plugin.h: -------------------------------------------------------------------------------- 1 | #ifndef FLUTTER_PLUGIN_FLUTTER_AUDIO_DESKTOP_PLUGIN_H_ 2 | #define FLUTTER_PLUGIN_FLUTTER_AUDIO_DESKTOP_PLUGIN_H_ 3 | 4 | #include 5 | 6 | #ifdef FLUTTER_PLUGIN_IMPL 7 | #define FLUTTER_PLUGIN_EXPORT __declspec(dllexport) 8 | #else 9 | #define FLUTTER_PLUGIN_EXPORT __declspec(dllimport) 10 | #endif 11 | 12 | #if defined(__cplusplus) 13 | extern "C" { 14 | #endif 15 | 16 | FLUTTER_PLUGIN_EXPORT void FlutterAudioDesktopPluginRegisterWithRegistrar( 17 | FlutterDesktopPluginRegistrarRef registrar); 18 | 19 | #if defined(__cplusplus) 20 | } // extern "C" 21 | #endif 22 | 23 | #endif // FLUTTER_PLUGIN_FLUTTER_AUDIO_DESKTOP_PLUGIN_H_ 24 | -------------------------------------------------------------------------------- /plugins/flutter_chat_types/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | # Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. 25 | /pubspec.lock 26 | **/doc/api/ 27 | .dart_tool/ 28 | .packages 29 | build/ 30 | -------------------------------------------------------------------------------- /plugins/flutter_chat_types/.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: 4b330ddbedab445481cc73d50a4695b9154b4e4f 8 | channel: dev 9 | 10 | project_type: plugin 11 | -------------------------------------------------------------------------------- /plugins/flutter_chat_types/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.0.1 2 | 3 | * TODO: Describe initial release. 4 | -------------------------------------------------------------------------------- /plugins/flutter_chat_types/LICENSE: -------------------------------------------------------------------------------- 1 | TODO: Add your license here. 2 | -------------------------------------------------------------------------------- /plugins/flutter_chat_types/README.md: -------------------------------------------------------------------------------- 1 | # flutter_chat_types 2 | 3 | A new Flutter project. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter 8 | [plug-in package](https://flutter.dev/developing-packages/), 9 | a specialized package that includes platform-specific implementation code for 10 | Android and/or iOS. 11 | 12 | For help getting started with Flutter, view our 13 | [online documentation](https://flutter.dev/docs), which offers tutorials, 14 | samples, guidance on mobile development, and a full API reference. 15 | 16 | -------------------------------------------------------------------------------- /plugins/flutter_chat_types/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 | -------------------------------------------------------------------------------- /plugins/flutter_chat_types/android/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | -------------------------------------------------------------------------------- /plugins/flutter_chat_types/android/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /plugins/flutter_chat_types/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java: -------------------------------------------------------------------------------- 1 | package io.flutter.plugins; 2 | 3 | import androidx.annotation.Keep; 4 | import androidx.annotation.NonNull; 5 | import io.flutter.Log; 6 | 7 | import io.flutter.embedding.engine.FlutterEngine; 8 | 9 | /** 10 | * Generated file. Do not edit. 11 | * This file is generated by the Flutter tool based on the 12 | * plugins that support the Android platform. 13 | */ 14 | @Keep 15 | public final class GeneratedPluginRegistrant { 16 | private static final String TAG = "GeneratedPluginRegistrant"; 17 | public static void registerWith(@NonNull FlutterEngine flutterEngine) { 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /plugins/flutter_chat_types/android/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | -------------------------------------------------------------------------------- /plugins/flutter_chat_types/example/.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: 4b330ddbedab445481cc73d50a4695b9154b4e4f 8 | channel: dev 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /plugins/flutter_chat_types/example/README.md: -------------------------------------------------------------------------------- 1 | # flutter_chat_types_example 2 | 3 | Demonstrates how to use the flutter_chat_types plugin. 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 | -------------------------------------------------------------------------------- /plugins/flutter_chat_types/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 | -------------------------------------------------------------------------------- /plugins/flutter_chat_types/example/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /plugins/flutter_chat_types/example/android/app/src/main/kotlin/com/example/flutter_chat_types_example/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.flutter_chat_types_example 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /plugins/flutter_chat_types/example/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /plugins/flutter_chat_types/example/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /plugins/flutter_chat_types/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_types/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /plugins/flutter_chat_types/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_types/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /plugins/flutter_chat_types/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_types/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /plugins/flutter_chat_types/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_types/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /plugins/flutter_chat_types/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_types/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /plugins/flutter_chat_types/example/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /plugins/flutter_chat_types/example/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /plugins/flutter_chat_types/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-6.7-all.zip 7 | -------------------------------------------------------------------------------- /plugins/flutter_chat_types/lib/flutter_chat_types.dart: -------------------------------------------------------------------------------- 1 | library flutter_chat_types; 2 | 3 | export 'src/message.dart'; 4 | export 'src/messages/custom_message.dart'; 5 | export 'src/messages/delete_message.dart'; 6 | export 'src/messages/emoji_message.dart'; 7 | export 'src/messages/file_message.dart'; 8 | export 'src/messages/image_message.dart'; 9 | export 'src/messages/partial_custom.dart'; 10 | export 'src/messages/partial_file.dart'; 11 | export 'src/messages/partial_image.dart'; 12 | export 'src/messages/partial_text.dart'; 13 | export 'src/messages/text_message.dart'; 14 | export 'src/messages/unsupported_message.dart'; 15 | export 'src/preview_data.dart'; 16 | export 'src/room.dart'; 17 | export 'src/user.dart'; 18 | -------------------------------------------------------------------------------- /plugins/flutter_chat_types/lib/src/messages/partial_custom.g.dart: -------------------------------------------------------------------------------- 1 | // GENERATED CODE - DO NOT MODIFY BY HAND 2 | 3 | part of 'partial_custom.dart'; 4 | 5 | // ************************************************************************** 6 | // JsonSerializableGenerator 7 | // ************************************************************************** 8 | 9 | PartialCustom _$PartialCustomFromJson(Map json) => 10 | PartialCustom( 11 | metadata: json['metadata'] as Map?, 12 | ); 13 | 14 | Map _$PartialCustomToJson(PartialCustom instance) => 15 | { 16 | 'metadata': instance.metadata, 17 | }; 18 | -------------------------------------------------------------------------------- /plugins/flutter_chat_types/lib/src/util.dart: -------------------------------------------------------------------------------- 1 | String shortFileName(name) { 2 | if (name.length > 30) { 3 | final start = name.substring(0, 15); 4 | final end = name.substring(name.length - 15, name.length); 5 | return "$start...$end"; 6 | } 7 | return name; 8 | } 9 | -------------------------------------------------------------------------------- /plugins/flutter_chat_types/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: flutter_chat_types 2 | publish_to: none 3 | description: > 4 | Utility library for the flutter_chat_ui and flutter_firebase_chat_core libraries 5 | which contains shared type declarations. 6 | version: 3.2.0 7 | homepage: https://flyer.chat 8 | repository: https://github.com/flyerhq/flutter_chat_types 9 | 10 | environment: 11 | sdk: ">=2.14.0 <3.0.0" 12 | 13 | dependencies: 14 | flutter: 15 | sdk: flutter 16 | equatable: ^2.0.3 17 | json_annotation: ^4.8.1 18 | meta: ^1.3.0 19 | 20 | dev_dependencies: 21 | flutter_test: 22 | sdk: flutter 23 | flutter_lints: ^1.0.4 24 | json_serializable: ^6.0.1 25 | build_runner: ^2.4.6 26 | 27 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/.github/ISSUE_TEMPLATE/---questions---help.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: "\U0001F914 Questions & help" 3 | about: " Use this if there is something not clear about the code or documentation." 4 | title: '' 5 | labels: question 6 | assignees: '' 7 | 8 | --- 9 | 10 | 17 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Link preview 4 | url: https://github.com/flyerhq/flutter_link_previewer/issues/new 5 | about: Use this to report link preview issues. 6 | - name: Firebase chat core 7 | url: https://github.com/flyerhq/flutter_firebase_chat_core/issues/new/choose 8 | about: Use this to report Firebase chat core issues. 9 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/.github/workflows/build.yaml: -------------------------------------------------------------------------------- 1 | name: build 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | pull_request: 7 | branches: [main] 8 | 9 | jobs: 10 | build-and-test: 11 | runs-on: ubuntu-latest 12 | 13 | steps: 14 | - uses: actions/checkout@v2 15 | 16 | - name: Setup Flutter environment 17 | uses: subosito/flutter-action@v1 18 | with: 19 | channel: 'stable' 20 | 21 | - name: Install dependencies 22 | run: flutter pub get 23 | 24 | - run: flutter format -n . --set-exit-if-changed 25 | - run: flutter analyze --no-pub 26 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/.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: 18116933e77adc82f80866c928266a5b4f1ed645 8 | channel: stable 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/doc/installation.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: installation 3 | title: Installation 4 | --- 5 | 6 | Add `flutter_chat_ui` to your package's `pubspec.yaml` file. Check current version on [pub.dev](https://pub.dev/packages/flutter_chat_ui/install). 7 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/doc/types.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: types 3 | title: Types 4 | --- 5 | 6 | All types are in a separate package, [flutter_chat_types](https://pub.dev/packages/flutter_chat_types). There are 3 supported message types at the moment - `File`, `Image` and `Text`. All of them have corresponding "partial" message types, that include only the message's content. "Partial" messages are useful to create the content and then pass it to some kind of a backend service, which will assign fields like `id` or `author` etc, returning a "full" message which can be passed to the `messages` parameter of the `Chat` widget. In addition to that, there are `Custom` and `Unsupported` types. `Custom` can be used to build anything you want, and `Unsupported` is just a placeholder to have backwards compatibility. See the [API reference](https://pub.dev/documentation/flutter_chat_types/latest/index.html) for more info. 7 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/.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: 18116933e77adc82f80866c928266a5b4f1ed645 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/README.md: -------------------------------------------------------------------------------- 1 | # example 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 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/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 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/android/app/src/main/kotlin/com/example/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/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-6.7-all.zip 7 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/.gitignore: -------------------------------------------------------------------------------- 1 | **/dgph 2 | *.mode1v3 3 | *.mode2v3 4 | *.moved-aside 5 | *.pbxuser 6 | *.perspectivev3 7 | **/*sync/ 8 | .sconsign.dblite 9 | .tags* 10 | **/.vagrant/ 11 | **/DerivedData/ 12 | Icon? 13 | **/Pods/ 14 | **/.symlinks/ 15 | profile 16 | xcuserdata 17 | **/.generated/ 18 | Flutter/App.framework 19 | Flutter/Flutter.framework 20 | Flutter/Flutter.podspec 21 | Flutter/Generated.xcconfig 22 | Flutter/ephemeral/ 23 | Flutter/app.flx 24 | Flutter/app.zip 25 | Flutter/flutter_assets/ 26 | Flutter/flutter_export_environment.sh 27 | ServiceDefinitions.json 28 | Runner/GeneratedPluginRegistrant.* 29 | 30 | # Exceptions to above rules. 31 | !default.mode1v3 32 | !default.mode2v3 33 | !default.pbxuser 34 | !default.perspectivev3 35 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/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 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/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 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/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. -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/web/favicon.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/web/icons/Icon-192.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/web/icons/Icon-512.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/web/icons/Icon-maskable-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/web/icons/Icon-maskable-192.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/example/web/icons/Icon-maskable-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/example/web/icons/Icon-maskable-512.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/assets/2.0x/icon-attachment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/lib/assets/2.0x/icon-attachment.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/assets/2.0x/icon-delivered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/lib/assets/2.0x/icon-delivered.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/assets/2.0x/icon-document.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/lib/assets/2.0x/icon-document.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/assets/2.0x/icon-error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/lib/assets/2.0x/icon-error.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/assets/2.0x/icon-reply.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/lib/assets/2.0x/icon-reply.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/assets/2.0x/icon-seen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/lib/assets/2.0x/icon-seen.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/assets/2.0x/icon-send.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/lib/assets/2.0x/icon-send.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/assets/2.0x/icon-x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/lib/assets/2.0x/icon-x.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/assets/3.0x/icon-attachment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/lib/assets/3.0x/icon-attachment.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/assets/3.0x/icon-delivered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/lib/assets/3.0x/icon-delivered.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/assets/3.0x/icon-document.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/lib/assets/3.0x/icon-document.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/assets/3.0x/icon-error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/lib/assets/3.0x/icon-error.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/assets/3.0x/icon-reply.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/lib/assets/3.0x/icon-reply.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/assets/3.0x/icon-seen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/lib/assets/3.0x/icon-seen.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/assets/3.0x/icon-send.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/lib/assets/3.0x/icon-send.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/assets/3.0x/icon-x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/lib/assets/3.0x/icon-x.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/assets/icon-attachment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/lib/assets/icon-attachment.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/assets/icon-delivered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/lib/assets/icon-delivered.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/assets/icon-document.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/lib/assets/icon-document.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/assets/icon-error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/lib/assets/icon-error.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/assets/icon-reply.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/lib/assets/icon-reply.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/assets/icon-seen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/lib/assets/icon-seen.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/assets/icon-send.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/lib/assets/icon-send.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/assets/icon-x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_chat_ui/lib/assets/icon-x.png -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/flutter_chat_ui.dart: -------------------------------------------------------------------------------- 1 | library flutter_chat_ui; 2 | 3 | export 'src/chat_l10n.dart'; 4 | export 'src/chat_theme.dart'; 5 | export 'src/models/emoji_enlargement_behavior.dart'; 6 | export 'src/models/send_button_visibility_mode.dart'; 7 | export 'src/util.dart' show formatBytes, isConsistsOfEmojis; 8 | export 'src/widgets/attachment_button.dart'; 9 | export 'src/widgets/chat.dart'; 10 | export 'src/widgets/chat_list.dart'; 11 | export 'src/widgets/file_message.dart'; 12 | export 'src/widgets/image_message.dart'; 13 | export 'src/widgets/input.dart'; 14 | export 'src/widgets/message.dart'; 15 | export 'src/widgets/send_button.dart'; 16 | export 'src/widgets/text_message.dart'; 17 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/src/conditional/base_conditional.dart: -------------------------------------------------------------------------------- 1 | import 'conditional.dart'; 2 | 3 | /// The abstract base class for a conditional import feature. 4 | abstract class BaseConditional implements Conditional {} 5 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/src/conditional/conditional.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'conditional_stub.dart' 3 | if (dart.library.io) 'io_conditional.dart' 4 | if (dart.library.html) 'browser_conditional.dart'; 5 | 6 | /// The abstract class for a conditional import feature. 7 | abstract class Conditional { 8 | /// Creates a new platform appropriate conditional. 9 | /// 10 | /// Creates an `IOConditional` if `dart:io` is available and a `BrowserConditional` if 11 | /// `dart:html` is available, otherwise it will throw an unsupported error. 12 | factory Conditional() => createConditional(); 13 | 14 | /// Returns an appropriate platform ImageProvider for specified URI 15 | ImageProvider getProvider(String uri); 16 | } 17 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/src/conditional/conditional_stub.dart: -------------------------------------------------------------------------------- 1 | import 'base_conditional.dart'; 2 | 3 | /// Implemented in `browser_conditional.dart` and `io_conditional.dart`. 4 | BaseConditional createConditional() => 5 | throw UnsupportedError('Cannot create a conditional'); 6 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/src/conditional/io_conditional.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | import 'package:flutter/material.dart'; 3 | import 'base_conditional.dart'; 4 | 5 | /// Create a [IOConditional]. 6 | /// 7 | /// Used from conditional imports, matches the definition in `conditional_stub.dart`. 8 | BaseConditional createConditional() => IOConditional(); 9 | 10 | /// A conditional for anything but browser 11 | class IOConditional extends BaseConditional { 12 | /// Returns [NetworkImage] if URI starts with http 13 | /// otherwise uses IO to create File 14 | @override 15 | ImageProvider getProvider(String uri) { 16 | if (uri.startsWith('http')) { 17 | return NetworkImage(uri); 18 | } else { 19 | return FileImage(File(uri)); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/src/models/date_header.dart: -------------------------------------------------------------------------------- 1 | import 'package:equatable/equatable.dart'; 2 | import 'package:meta/meta.dart'; 3 | 4 | /// A class that represents a date header between messages. 5 | @immutable 6 | class DateHeader extends Equatable { 7 | /// Creates a date header. 8 | const DateHeader({ 9 | required this.text, 10 | }); 11 | 12 | /// Equatable props 13 | @override 14 | List get props => [text]; 15 | 16 | /// Text to show in a header 17 | final String text; 18 | } 19 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/src/models/emoji_enlargement_behavior.dart: -------------------------------------------------------------------------------- 1 | /// Used to control the enlargement behavior of the emojis in the 2 | /// [types.TextMessage]. 3 | enum EmojiEnlargementBehavior { 4 | /// The emojis will be enlarged only if the [types.TextMessage] consists of 5 | /// one or more emojis. 6 | multi, 7 | 8 | /// Never enlarge emojis. 9 | never, 10 | 11 | /// The emoji will be enlarged only if the [types.TextMessage] consists of 12 | /// a single emoji. 13 | single, 14 | } 15 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/src/models/message_spacer.dart: -------------------------------------------------------------------------------- 1 | import 'package:equatable/equatable.dart'; 2 | import 'package:meta/meta.dart'; 3 | 4 | /// A class that represents additional space between messages. 5 | @immutable 6 | class MessageSpacer extends Equatable { 7 | /// Creates a MessageSpacer. 8 | const MessageSpacer({ 9 | required this.height, 10 | required this.id, 11 | }); 12 | 13 | /// Equatable props 14 | @override 15 | List get props => [height, id]; 16 | 17 | /// Spacer's height 18 | final double height; 19 | 20 | /// Unique ID of the spacer 21 | final String id; 22 | } 23 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/src/models/preview_image.dart: -------------------------------------------------------------------------------- 1 | import 'package:equatable/equatable.dart'; 2 | import 'package:meta/meta.dart'; 3 | 4 | /// A class that represents an image showed in a preview widget. 5 | @immutable 6 | class PreviewImage extends Equatable { 7 | /// Creates a preview image. 8 | const PreviewImage({ 9 | required this.id, 10 | required this.uri, 11 | }); 12 | 13 | /// Equatable props 14 | @override 15 | List get props => [id, uri]; 16 | 17 | /// Unique ID of the image 18 | final String id; 19 | 20 | /// Image's URI 21 | final String uri; 22 | } 23 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/src/models/send_button_visibility_mode.dart: -------------------------------------------------------------------------------- 1 | /// Used to toggle the visibility behavior of the [SendButton] based on the 2 | /// [TextField] state inside the [Input] widget. 3 | enum SendButtonVisibilityMode { 4 | /// Always show the [SendButton] regardless of the [TextField] state. 5 | always, 6 | 7 | /// The [SendButton] will only appear when the [TextField] is not empty. 8 | editing, 9 | } 10 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/src/widgets/inherited_chat_theme.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/widgets.dart'; 2 | import '../chat_theme.dart'; 3 | 4 | /// Used to make provided [ChatTheme] class available through the whole package 5 | class InheritedChatTheme extends InheritedWidget { 6 | /// Creates [InheritedWidget] from a provided [ChatTheme] class 7 | const InheritedChatTheme({ 8 | Key? key, 9 | required this.theme, 10 | required Widget child, 11 | }) : super(key: key, child: child); 12 | 13 | /// Represents chat theme 14 | final ChatTheme theme; 15 | 16 | static InheritedChatTheme of(BuildContext context) { 17 | return context.dependOnInheritedWidgetOfExactType()!; 18 | } 19 | 20 | @override 21 | bool updateShouldNotify(InheritedChatTheme oldWidget) => 22 | theme.hashCode != oldWidget.theme.hashCode; 23 | } 24 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/lib/src/widgets/inherited_l10n.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/widgets.dart'; 2 | import '../chat_l10n.dart'; 3 | 4 | /// Used to make provided [ChatL10n] class available through the whole package 5 | class InheritedL10n extends InheritedWidget { 6 | /// Creates [InheritedWidget] from a provided [ChatL10n] class 7 | const InheritedL10n({ 8 | Key? key, 9 | required this.l10n, 10 | required Widget child, 11 | }) : super(key: key, child: child); 12 | 13 | /// Represents localized copy 14 | final ChatL10n l10n; 15 | 16 | static InheritedL10n of(BuildContext context) { 17 | return context.dependOnInheritedWidgetOfExactType()!; 18 | } 19 | 20 | @override 21 | bool updateShouldNotify(InheritedL10n oldWidget) => 22 | l10n.hashCode != oldWidget.l10n.hashCode; 23 | } 24 | -------------------------------------------------------------------------------- /plugins/flutter_chat_ui/test/flutter_chat_ui_test.dart: -------------------------------------------------------------------------------- 1 | import 'file_message.test.dart' as file_message_test; 2 | import 'image_message.test.dart' as image_message_test; 3 | import 'input.test.dart' as input_test; 4 | import 'text_message.test.dart' as text_message_test; 5 | import 'util.test.dart' as util_test; 6 | 7 | void main() { 8 | file_message_test.main(); 9 | image_message_test.main(); 10 | input_test.main(); 11 | text_message_test.main(); 12 | util_test.main(); 13 | } 14 | -------------------------------------------------------------------------------- /plugins/flutter_link_previewer/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | # Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. 25 | /pubspec.lock 26 | **/doc/api/ 27 | .dart_tool/ 28 | .packages 29 | build/ 30 | -------------------------------------------------------------------------------- /plugins/flutter_link_previewer/.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: 4b330ddbedab445481cc73d50a4695b9154b4e4f 8 | channel: dev 9 | 10 | project_type: plugin 11 | -------------------------------------------------------------------------------- /plugins/flutter_link_previewer/LICENSE: -------------------------------------------------------------------------------- 1 | TODO: Add your license here. 2 | -------------------------------------------------------------------------------- /plugins/flutter_link_previewer/example/.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: 4b330ddbedab445481cc73d50a4695b9154b4e4f 8 | channel: dev 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /plugins/flutter_link_previewer/example/README.md: -------------------------------------------------------------------------------- 1 | # flutter_link_previewer_example 2 | 3 | Demonstrates how to use the flutter_link_previewer plugin. 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 | -------------------------------------------------------------------------------- /plugins/flutter_link_previewer/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 | -------------------------------------------------------------------------------- /plugins/flutter_link_previewer/example/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /plugins/flutter_link_previewer/example/android/app/src/main/kotlin/com/example/flutter_link_previewer_example/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.flutter_link_previewer_example 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /plugins/flutter_link_previewer/example/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /plugins/flutter_link_previewer/example/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /plugins/flutter_link_previewer/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_link_previewer/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /plugins/flutter_link_previewer/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_link_previewer/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /plugins/flutter_link_previewer/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_link_previewer/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /plugins/flutter_link_previewer/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_link_previewer/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /plugins/flutter_link_previewer/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/plugins/flutter_link_previewer/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /plugins/flutter_link_previewer/example/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /plugins/flutter_link_previewer/example/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /plugins/flutter_link_previewer/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-6.7-all.zip 7 | -------------------------------------------------------------------------------- /plugins/flutter_link_previewer/lib/flutter_link_previewer.dart: -------------------------------------------------------------------------------- 1 | library flutter_link_previewer; 2 | 3 | export 'src/types.dart'; 4 | export 'src/utils.dart' show getPreviewData, regexEmail, regexLink; 5 | export 'src/widgets/link_preview.dart'; 6 | -------------------------------------------------------------------------------- /plugins/flutter_link_previewer/lib/src/types.dart: -------------------------------------------------------------------------------- 1 | import 'package:meta/meta.dart'; 2 | 3 | /// Represents the size object 4 | @immutable 5 | class Size { 6 | /// Creates [Size] from width and height 7 | const Size({ 8 | required this.height, 9 | required this.width, 10 | }); 11 | 12 | /// Height 13 | final double height; 14 | 15 | /// Width 16 | final double width; 17 | } 18 | -------------------------------------------------------------------------------- /plugins/flutter_link_previewer/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: flutter_link_previewer 2 | description: > 3 | URL preview extracted from the provided text with 4 | basic customization and ability to render from cached data. 5 | version: 2.6.0 6 | homepage: https://flyer.chat 7 | repository: https://github.com/flyerhq/flutter_link_previewer 8 | publish_to: none 9 | 10 | environment: 11 | sdk: ^3.6.0 12 | flutter: ">=2.0.0" 13 | 14 | dependencies: 15 | flutter: 16 | sdk: flutter 17 | flutter_chat_types: 18 | path: '../flutter_chat_types' 19 | flutter_linkify: ^6.0.0 20 | html: ^0.15.0 21 | http: ^1.2.2 22 | linkify: ^5.0.0 23 | meta: ^1.3.0 24 | url_launcher: ^6.3.0 25 | 26 | dev_dependencies: 27 | flutter_lints: ^1.0.4 28 | flutter_test: 29 | sdk: flutter 30 | -------------------------------------------------------------------------------- /plugins/flutter_link_previewer/test/flutter_link_previewer_test.dart: -------------------------------------------------------------------------------- 1 | // ignore_for_file: deprecated_member_use 2 | 3 | import 'package:flutter/services.dart'; 4 | import 'package:flutter_test/flutter_test.dart'; 5 | //import 'package:flutter_link_previewer/flutter_link_previewer.dart'; 6 | 7 | void main() { 8 | const MethodChannel channel = MethodChannel('flutter_link_previewer'); 9 | 10 | TestWidgetsFlutterBinding.ensureInitialized(); 11 | 12 | setUp(() { 13 | channel.setMockMethodCallHandler((MethodCall methodCall) async { 14 | return '42'; 15 | }); 16 | }); 17 | 18 | tearDown(() { 19 | channel.setMockMethodCallHandler(null); 20 | }); 21 | } 22 | -------------------------------------------------------------------------------- /plugins/flutter_logger/.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /plugins/flutter_logger/.gitignore: -------------------------------------------------------------------------------- 1 | .vscode/ 2 | .DS_Store 3 | .dart_tool/ 4 | .idea/ 5 | .iml 6 | 7 | .packages 8 | .pub/ 9 | 10 | build/ 11 | ios/ 12 | android/ 13 | demo/ 14 | 15 | pubspec.lock 16 | doc/ -------------------------------------------------------------------------------- /plugins/flutter_logger/.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: 7a4c33425ddd78c54aba07d86f3f9a4a0051769b 8 | channel: stable 9 | 10 | project_type: plugin 11 | -------------------------------------------------------------------------------- /plugins/flutter_logger/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.7.1 2 | - Fixed error during build 3 | 4 | ## 0.7.0 5 | - First version 6 | -------------------------------------------------------------------------------- /plugins/flutter_logger/README.md: -------------------------------------------------------------------------------- 1 | Flutter extension for [logger](https://github.com/leisim/logger).
2 | Please go to there for documentation. 3 | -------------------------------------------------------------------------------- /plugins/flutter_logger/example/.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: b712a172f9694745f50505c93340883493b505e5 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /plugins/flutter_logger/example/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: example 2 | description: Demonstrates how to use the flutter_logger plugin. 3 | publish_to: 'none' 4 | 5 | environment: 6 | sdk: ^3.6.0 7 | 8 | dependencies: 9 | flutter: 10 | sdk: flutter 11 | 12 | flutter_logger: 13 | path: ../ 14 | logger: ^2.5.0 15 | 16 | flutter: 17 | uses-material-design: true -------------------------------------------------------------------------------- /plugins/flutter_logger/lib/flutter_logger.dart: -------------------------------------------------------------------------------- 1 | export 'src/log_console_on_shake.dart'; 2 | export 'src/log_console.dart'; 3 | -------------------------------------------------------------------------------- /plugins/flutter_logger/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: flutter_logger 2 | description: Flutter extension for logger. Please go there for documentation. 3 | version: 0.7.1 4 | homepage: https://github.com/leisim/flutter_logger 5 | 6 | environment: 7 | sdk: ^3.6.0 8 | 9 | dependencies: 10 | flutter: 11 | sdk: flutter 12 | 13 | logger: ^2.5.0 14 | sensors_plus: ^6.0.1 -------------------------------------------------------------------------------- /pnserver/.env.example: -------------------------------------------------------------------------------- 1 | export APN_AUTH_TYPE=token 2 | export APN_KEY_PATH=./aps.p8 3 | export APN_KEY_ID=your_key_id 4 | export APN_TEAM_ID=your_team_id 5 | export APN_BUNDLE_ID=your.app.bundle.id 6 | export APN_DEVELOPMENT=true 7 | export REDIS_PASSWORD=your_secure_password 8 | export PORT=9000 -------------------------------------------------------------------------------- /pnserver/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM golang:1.23-alpine AS builder 2 | 3 | WORKDIR /app 4 | COPY . . 5 | RUN go mod download 6 | RUN CGO_ENABLED=0 GOOS=linux go build -o /pnserver 7 | 8 | FROM alpine:3.18 9 | COPY --from=builder /pnserver /pnserver 10 | 11 | # Create directory for APN key 12 | RUN mkdir -p /etc/apn && chmod 700 /etc/apn 13 | 14 | ENTRYPOINT ["/pnserver"] -------------------------------------------------------------------------------- /pnserver/Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: build run docker-build docker-compose-up 2 | 3 | build: 4 | go build -o pnserver 5 | 6 | run: build 7 | ./pnserver 8 | 9 | docker: 10 | docker build -t cylonix/tailchat-pnserver . 11 | 12 | docker-up: 13 | docker compose up -d 14 | 15 | docker-down: 16 | docker compose down 17 | -------------------------------------------------------------------------------- /pnserver/go.mod: -------------------------------------------------------------------------------- 1 | module cylonix.io/tailchat/pn 2 | 3 | go 1.22.3 4 | 5 | require ( 6 | github.com/go-redis/redis/v8 v8.11.5 7 | github.com/google/uuid v1.6.0 8 | github.com/sideshow/apns2 v0.25.0 9 | ) 10 | 11 | require ( 12 | github.com/cespare/xxhash/v2 v2.1.2 // indirect 13 | github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect 14 | github.com/golang-jwt/jwt/v4 v4.4.1 // indirect 15 | golang.org/x/crypto v0.0.0-20170512130425-ab89591268e0 // indirect 16 | golang.org/x/net v0.0.0-20220403103023-749bd193bc2b // indirect 17 | golang.org/x/text v0.3.7 // indirect 18 | ) 19 | -------------------------------------------------------------------------------- /tailchatd/go.mod: -------------------------------------------------------------------------------- 1 | module cylonix.io/tailchatd 2 | 3 | go 1.22.2 4 | 5 | require ( 6 | github.com/joho/godotenv v1.5.1 7 | github.com/vishvananda/netlink v1.3.0 8 | golang.org/x/sys v0.10.0 9 | ) 10 | 11 | require github.com/vishvananda/netns v0.0.4 // indirect 12 | -------------------------------------------------------------------------------- /tailchatd/go.sum: -------------------------------------------------------------------------------- 1 | github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= 2 | github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= 3 | github.com/vishvananda/netlink v1.3.0 h1:X7l42GfcV4S6E4vHTsw48qbrV+9PVojNfIhZcwQdrZk= 4 | github.com/vishvananda/netlink v1.3.0/go.mod h1:i6NetklAujEcC6fK0JPjT8qSwWyO0HLn4UKG+hGqeJs= 5 | github.com/vishvananda/netns v0.0.4 h1:Oeaw1EM2JMxD51g9uhtC0D7erkIjgmj8+JZc26m1YX8= 6 | github.com/vishvananda/netns v0.0.4/go.mod h1:SpkAiCQRtJ6TvvxPnOSyH3BMl6unz3xZlaprSwhNNJM= 7 | golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 8 | golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= 9 | golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 10 | -------------------------------------------------------------------------------- /web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/web/favicon.png -------------------------------------------------------------------------------- /web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/web/icons/Icon-192.png -------------------------------------------------------------------------------- /web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/web/icons/Icon-512.png -------------------------------------------------------------------------------- /web/icons/Icon-maskable-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/web/icons/Icon-maskable-192.png -------------------------------------------------------------------------------- /web/icons/Icon-maskable-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/web/icons/Icon-maskable-512.png -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /windows/runner/resources/app_icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cylonix/tailchat/138f6d71fb5334830132cc89a211b440d898d270/windows/runner/resources/app_icon.ico -------------------------------------------------------------------------------- /windows/runner/runner.exe.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PerMonitorV2 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /windows/runner/utils.h: -------------------------------------------------------------------------------- 1 | #ifndef RUNNER_UTILS_H_ 2 | #define RUNNER_UTILS_H_ 3 | 4 | #include 5 | #include 6 | 7 | // Creates a console for the process, and redirects stdout and stderr to 8 | // it for both the runner and the Flutter library. 9 | void CreateAndAttachConsole(); 10 | 11 | // Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string 12 | // encoded in UTF-8. Returns an empty std::string on failure. 13 | std::string Utf8FromUtf16(const wchar_t* utf16_string); 14 | 15 | // Gets the command line arguments passed in as a std::vector, 16 | // encoded in UTF-8. Returns an empty std::vector on failure. 17 | std::vector GetCommandLineArguments(); 18 | 19 | #endif // RUNNER_UTILS_H_ 20 | --------------------------------------------------------------------------------