├── chat ├── consumer-rules.pro ├── .gitignore ├── src │ └── main │ │ ├── java │ │ └── com │ │ │ └── amity │ │ │ └── socialcloud │ │ │ └── uikit │ │ │ └── chat │ │ │ ├── messages │ │ │ ├── viewModel │ │ │ │ ├── AmityUnknownMsgViewModel.kt │ │ │ │ └── AmityTextMessageViewModel.kt │ │ │ ├── viewHolder │ │ │ │ ├── AmityMessageItemListener.kt │ │ │ │ └── AmityAudioPlayListener.kt │ │ │ └── composebar │ │ │ │ └── AmityChatRoomComposeBar.kt │ │ │ ├── home │ │ │ ├── callback │ │ │ │ ├── AmityRecentChatItemClickListener.kt │ │ │ │ ├── AmityDirectoryFragmentDelegate.kt │ │ │ │ └── AmityRecentChatFragmentDelegate.kt │ │ │ └── groupchat │ │ │ │ └── AmityCreateGroupChatFragment.kt │ │ │ ├── util │ │ │ └── MessageType.kt │ │ │ └── directory │ │ │ └── fragment │ │ │ └── AmityDirectoryFragment.kt │ │ └── res │ │ ├── menu │ │ ├── amity_text_sender_menu.xml │ │ ├── amity_chat_home.xml │ │ └── amity_chat_list.xml │ │ ├── layout │ │ ├── amity_fragment_chat_room.xml │ │ ├── amity_dialog_chat.xml │ │ ├── amity_fragment_create_group_chat.xml │ │ ├── amity_fragment_directory.xml │ │ └── amity_activity_chat.xml │ │ └── drawable │ │ ├── amity_ic_arrow_down.xml │ │ ├── amity_ic_check.xml │ │ ├── amity_ic_count.xml │ │ ├── amity_ic_play.xml │ │ ├── amity_ic_image.xml │ │ ├── amity_ic_default_avatar_direct_chat.xml │ │ └── amity_ic_image_failed.xml └── build.gradle ├── amity-uikit ├── .gitignore ├── consumer-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ └── java │ └── com │ └── amity │ └── socialcloud │ └── uikit │ └── AmityUIKitClient.kt ├── common ├── .gitignore └── src │ └── main │ ├── res │ ├── values │ │ └── integers.xml │ ├── drawable │ │ ├── amity_ic_star.png │ │ ├── amity_ic_plus_white.png │ │ ├── amity_empty.xml │ │ ├── amity_exo_control_bg.xml │ │ ├── amity_rounded_primary_color_bg.xml │ │ ├── amity_bg_border.xml │ │ ├── amity_arrow_upward.xml │ │ ├── amity_ic_arrow_back.xml │ │ ├── amity_ic_add.xml │ │ ├── amity_ic_default_ring.xml │ │ ├── amity_bg_search.xml │ │ ├── amity_ic_close.xml │ │ ├── amity_compose_bar_send_icon.xml │ │ ├── amity_ic_avatar_placeholder.xml │ │ ├── amity_bg_transparent_button.xml │ │ ├── amity_ic_tick_green.xml │ │ ├── amity_bg_bottom_naviation.xml │ │ ├── amity_ic_baseline_dehaze.xml │ │ ├── amity_v4_radio_button.xml │ │ ├── amity_ic_photo.xml │ │ ├── amity_ic_plus_button.xml │ │ ├── amity_arrow_down.xml │ │ ├── amity_ic_filled_cross.xml │ │ ├── amity_ic_search.xml │ │ ├── amity_ic_unblock_user.xml │ │ ├── amity_ic_chevron_right.xml │ │ ├── amity_ic_sponsor_badge.xml │ │ ├── amity_ic_arrow.xml │ │ ├── amity_ic_back.xml │ │ ├── amity_ic_post_creation.xml │ │ ├── amity_ic_attachment.xml │ │ ├── amity_ic_circle.xml │ │ ├── amity_ic_error.xml │ │ ├── amity_ic_more_horiz.xml │ │ ├── amity_ic_story_flash.xml │ │ ├── amity_ic_add_black.xml │ │ └── amity_ic_location.xml │ ├── xml │ │ └── amity_file_path.xml │ ├── color │ │ ├── material_btn_text_color_selector.xml │ │ ├── material_btn_bg_color_selector.xml │ │ ├── material_fab_bg_color_selector.xml │ │ ├── material_fab_icon_text_color_selector.xml │ │ ├── material_btn_stroke_color_selector.xml │ │ ├── switch_btn_bg_selector.xml │ │ └── radio_btn_bg_selector.xml │ ├── layout │ │ ├── amity_bottom_sheet_menu.xml │ │ ├── amity_activity_camera.xml │ │ ├── amity_view_radio_button.xml │ │ ├── amity_item_image_preview.xml │ │ └── amity_view_media_gallery_tab.xml │ └── values-v27 │ │ └── shape.xml │ └── java │ └── com │ └── amity │ └── socialcloud │ └── uikit │ └── common │ ├── components │ ├── AmityCommunityHeader.kt │ ├── AmityLongPressListener.kt │ ├── AmityMessageListListener.kt │ ├── AmityToolBarClickListener.kt │ ├── AmityAudioRecorderListener.kt │ ├── AmityChatComposeBarClickListener.kt │ └── AmityStyleColorSpan.kt │ ├── common │ └── views │ │ ├── AmityColorShade.kt │ │ ├── avatar │ │ └── AmityAvatarShape.kt │ │ ├── button │ │ └── AmityButtonType.kt │ │ ├── bottomsheet │ │ └── AmityMenuItemClickListener.kt │ │ ├── dialog │ │ └── bottomsheet │ │ │ └── BottomSheetMenuItem.kt │ │ └── list │ │ └── AmityRecyclerView.kt │ ├── utils │ ├── AmityProvider.kt │ ├── AmityFileDownloadStatus.kt │ ├── AmityTagLogUtil.kt │ ├── AmityNumberUtil.kt │ ├── AmitySingleLiveData.kt │ ├── AmityThemeUtil.kt │ └── AmitySafeClickListener.kt │ ├── linkpreview │ └── models │ │ ├── AmityPreviewMetadataException.kt │ │ ├── AmityPreviewUrlCacheItem.kt │ │ └── AmityPreviewMetadataCacheItem.kt │ ├── imagepreview │ └── AmityPreviewImage.kt │ ├── model │ ├── AmityEventType.kt │ ├── AmityMenuItem.kt │ ├── AmitySelectMemberItem.kt │ ├── AmityReactionType.kt │ ├── AmityMessageReactions.kt │ └── AmitySocialReactions.kt │ ├── base │ ├── AmityViewHolder.kt │ ├── FragmentStoreOwnerMap.kt │ ├── FragmentStoreOwner.kt │ └── AmityFragmentExtension.kt │ ├── memberpicker │ └── listener │ │ ├── AmitySelectMemberListener.kt │ │ ├── AmitySelectedMemberListener.kt │ │ └── AmityAddedMemberClickListener.kt │ └── camera │ └── AmityCameraActivity.kt ├── logging ├── .gitignore ├── consumer-rules.pro ├── src │ └── main │ │ ├── res │ │ └── values │ │ │ └── uikit_logging_config.xml │ │ ├── java │ │ └── com │ │ │ └── amity │ │ │ └── socialcloud │ │ │ └── uikit │ │ │ └── logging │ │ │ ├── AmityLoggingConfig.kt │ │ │ └── AmityExceptionHandler.kt │ │ └── AndroidManifest.xml └── build.gradle ├── sample ├── .gitignore └── src │ └── main │ ├── res │ ├── values │ │ ├── dimens.xml │ │ ├── uikit_logging_config.xml │ │ ├── upstra_sdk_config.xml │ │ ├── theme.xml │ │ ├── amity_uikit_social_configs.xml │ │ ├── styles.xml │ │ └── colors.xml │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_adaptive_back.png │ │ └── ic_launcher_adaptive_fore.png │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_adaptive_back.png │ │ └── ic_launcher_adaptive_fore.png │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_adaptive_back.png │ │ └── ic_launcher_adaptive_fore.png │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_adaptive_back.png │ │ └── ic_launcher_adaptive_fore.png │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_adaptive_back.png │ │ └── ic_launcher_adaptive_fore.png │ ├── values-night │ │ └── theme.xml │ ├── drawable │ │ ├── amity_live_chat_bottom_sheet_light.xml │ │ ├── amity_live_chat_bottom_sheet_dark.xml │ │ ├── amity_compose_bar_send_icon.xml │ │ └── amity_bottom_sheet_handler.xml │ ├── mipmap-anydpi-v26 │ │ └── ic_launcher.xml │ └── layout │ │ ├── amity_sample_activity_chat_home.xml │ │ ├── amity_activity_recent_message_list.xml │ │ ├── amity_activity_message_list_with_custom_ui.xml │ │ └── amity_activity_live_chat_list.xml │ └── java │ └── com │ └── amity │ └── socialcloud │ └── uikit │ └── sample │ ├── env │ ├── Environment.kt │ ├── SampleEnv.kt │ ├── SampleUrl.kt │ └── SampleBroker.kt │ ├── AmityMyTextMsgViewModel.kt │ └── AmityShareLinkToExternalApp.kt ├── social ├── .gitignore ├── consumer-rules.pro └── src │ └── main │ ├── java │ └── com │ │ └── amity │ │ └── socialcloud │ │ └── uikit │ │ ├── community │ │ ├── views │ │ │ ├── AmityCommunityFeedView.kt │ │ │ └── AmityTrendingChannelsView.kt │ │ ├── newsfeed │ │ │ ├── model │ │ │ │ ├── AmityPostDummyItem.kt │ │ │ │ ├── FileUploadState.kt │ │ │ │ ├── AmityBasePostContentItem.kt │ │ │ │ ├── AmityBasePostHeaderItem.kt │ │ │ │ ├── AmityBasePostItem.kt │ │ │ │ ├── AmityBasePostFooterItem.kt │ │ │ │ └── AmityMediaGalleryTarget.kt │ │ │ ├── events │ │ │ │ ├── AmityFeedRefreshEvent.kt │ │ │ │ ├── AmityCommentRefreshEvent.kt │ │ │ │ ├── PostOptionClickEvent.kt │ │ │ │ ├── CommentOptionClickEvent.kt │ │ │ │ ├── AmityCommentReplyIntentEvent.kt │ │ │ │ ├── PollVoteClickEvent.kt │ │ │ │ ├── PostReviewClickEvent.kt │ │ │ │ ├── PostGalleryClickEvent.kt │ │ │ │ ├── CommentContentClickEvent.kt │ │ │ │ ├── PostEngagementClickEvent.kt │ │ │ │ ├── CommentEngagementClickEvent.kt │ │ │ │ └── AmityFeedLoadStateEvent.kt │ │ │ ├── listener │ │ │ │ ├── AmityPostMediaClickListener.kt │ │ │ │ ├── AmityPostActionShareListener.kt │ │ │ │ ├── AmityPostActionLikeListener.kt │ │ │ │ ├── AmityPostItemClickListener.kt │ │ │ │ ├── AmityCreatePostButtonClickListener.kt │ │ │ │ ├── AmityPostImageItemClickListener.kt │ │ │ │ ├── AmityCreateCommunityClickListener.kt │ │ │ │ ├── AmityExploreCommunityItemClickListener.kt │ │ │ │ ├── AmityUserClickListener.kt │ │ │ │ ├── AmityPostMoreOptionClickListener.kt │ │ │ │ ├── AmityPostOptionClickListener.kt │ │ │ │ ├── AmityPostActionAvatarClickListener.kt │ │ │ │ ├── AmityCommunityClickListener.kt │ │ │ │ ├── AmityPostLivestreamClickListener.kt │ │ │ │ ├── AmityPostFileItemClickListener.kt │ │ │ │ ├── AmityCreatePostImageActionListener.kt │ │ │ │ ├── AmityPostActionCommunityClickListener.kt │ │ │ │ ├── AmityPostCommentReplyClickListener.kt │ │ │ │ ├── AmityCreatePostFileActionListener.kt │ │ │ │ ├── AmityPostCommentShowAllReplyListener.kt │ │ │ │ ├── AmityPostImageClickListener.kt │ │ │ │ ├── AmityCreatePostCommunitySelectionListener.kt │ │ │ │ ├── AmityPostCommentShowMoreActionListener.kt │ │ │ │ ├── AmityPostItemListener.kt │ │ │ │ ├── AmityPostVideoClickListener.kt │ │ │ │ ├── AmityCommentItemListener.kt │ │ │ │ ├── AmityPostCommentItemClickListener.kt │ │ │ │ ├── AmityGlobalUserClickListener.kt │ │ │ │ └── AmityUserClickListenerImpl.kt │ │ │ ├── util │ │ │ │ ├── AmityNewsFeedEvents.kt │ │ │ │ └── AmityTimelineType.kt │ │ │ ├── adapter │ │ │ │ ├── AmityPostImageChildrenItem.kt │ │ │ │ ├── AmityPostDummyViewHolder.kt │ │ │ │ ├── AmityGalleryUnknownPostViewHolder.kt │ │ │ │ ├── AmityPostFooterViewHolder.kt │ │ │ │ └── AmityPostCountViewHolder.kt │ │ │ ├── viewholder │ │ │ │ ├── DeletedCommentViewHolder.kt │ │ │ │ └── DeletedReplyCommentViewHolder.kt │ │ │ ├── viewmodel │ │ │ │ └── UserViewModel.kt │ │ │ └── view │ │ │ │ └── AmityBasePostView.kt │ │ ├── utils │ │ │ └── AmityShareType.kt │ │ ├── data │ │ │ ├── PostReviewBannerData.kt │ │ │ ├── AmitySelectCategoryItem.kt │ │ │ ├── CommunityProfileData.kt │ │ │ └── AmitySelectMemberItem.kt │ │ ├── profile │ │ │ └── listener │ │ │ │ ├── AmityEditUserProfileClickListener.kt │ │ │ │ └── AmityFeedFragmentDelegate.kt │ │ ├── explore │ │ │ ├── viewmodel │ │ │ │ └── AmityCategorySelectionViewModel.kt │ │ │ └── listener │ │ │ │ ├── AmityCommunityItemClickListener.kt │ │ │ │ ├── AmityCategoryItemClickListener.kt │ │ │ │ ├── AmityCategoryPreviewFragmentDelegate.kt │ │ │ │ ├── AmityTrendingCommunityFragmentDelegate.kt │ │ │ │ └── AmityRecommendedCommunityFragmentDelegate.kt │ │ ├── detailpage │ │ │ └── listener │ │ │ │ ├── AmityMessageClickListener.kt │ │ │ │ └── AmityEditCommunityProfileClickListener.kt │ │ ├── members │ │ │ └── AmityMemberClickListener.kt │ │ ├── home │ │ │ ├── listener │ │ │ │ ├── AmityNewsFeedFragmentDelegate.kt │ │ │ │ ├── AmityGlobalFeedFragmentDelegate.kt │ │ │ │ ├── AmityExploreFragmentFragmentDelegate.kt │ │ │ │ └── AmityMyCommunityListPreviewFragmentDelegate.kt │ │ │ └── fragments │ │ │ │ └── AmityCommunityHomeViewModel.kt │ │ ├── mycommunity │ │ │ ├── listener │ │ │ │ └── AmityMyCommunityItemClickListener.kt │ │ │ └── adapter │ │ │ │ └── AmityBaseMyCommunityPreviewItemViewHolder.kt │ │ ├── setting │ │ │ ├── user │ │ │ │ └── AmityUserSettingsMenuCreator.kt │ │ │ ├── story │ │ │ │ └── AmityStorySettingsMenuCreator.kt │ │ │ └── postreview │ │ │ │ └── AmityPostReviewSettingsMenuCreator.kt │ │ └── notificationsettings │ │ │ └── pushDetail │ │ │ └── AmityPostMenuCreator.kt │ │ └── feed │ │ └── settings │ │ ├── AmityPostSharingTarget.kt │ │ ├── AmityPostRenderer.kt │ │ └── AmityPostShareClickListener.kt │ └── res │ ├── values │ ├── amity_uikit_social_configs.xml │ ├── dimens.xml │ ├── colors.xml │ └── integers.xml │ ├── drawable │ ├── amity_view_image_post_placeholder.xml │ ├── amity_bg_image_count.xml │ ├── amity_btn_active.xml │ ├── amity_item_comment_separator.xml │ ├── amity_rounded_corner_red.xml │ ├── amity_rounded_grey_color_bg.xml │ ├── amity_rounded_primary_color_bg.xml │ ├── amity_feed_item_separator.xml │ ├── amity_bg_poll_draft_answer.xml │ ├── amity_rounded_corner_translucent.xml │ ├── amity_ic_dot.xml │ ├── amity_ic_ellipse.xml │ ├── amity_ic_like_selector.xml │ ├── amity_ic_dot_base.xml │ ├── amity_btn_inactive.xml │ ├── amity_bg_view_replies.xml │ ├── amity_bg_poll_add_draft_answer.xml │ ├── amity_bg_avatar_overlay.xml │ ├── amity_bg_poll_add_draft_answer_error.xml │ ├── amity_bg_post_attachment_options.xml │ ├── amity_bg_avatar_overlay_with_gradient.xml │ ├── amity_ic_cross_black.xml │ ├── amity_bg_comment_bubble.xml │ ├── amity_ic_expand_comment_box.xml │ ├── amity_bg_view_more_comments.xml │ ├── amity_rounded_corner_border_line_white.xml │ ├── amity_ic_filled_cross.xml │ ├── amity_ic_more_horizontal.xml │ ├── amity_ic_content_expand.xml │ ├── amity_ic_create.xml │ ├── amity_ic_push_comments.xml │ └── amity_ic_ban.xml │ ├── layout │ ├── amity_item_post_dummy.xml │ ├── amity_view_separator.xml │ ├── amity_item_settings_margin.xml │ ├── amity_item_community_category_list.xml │ ├── amity_activity_edit_post.xml │ ├── amity_item_separate_content.xml │ ├── amity_user_follower_home_fragment.xml │ ├── amity_fragment_comment_list.xml │ ├── amity_item_settings_radio_content.xml │ ├── amity_fragment_reaction_list.xml │ ├── amity_item_footer_view_post_file.xml │ ├── amity_item_post_attachment_option.xml │ ├── amity_activity_reaction_list.xml │ ├── amity_activity_user_profile.xml │ ├── amity_activity_edit_user_profile.xml │ ├── amity_activity_social_video_player.xml │ ├── amity_item_settings_header.xml │ ├── amity_activity_community_member_settings.xml │ ├── amity_item_base_post.xml │ ├── amity_activity_category_community_list.xml │ ├── amity_activity_create_post_role_selection.xml │ └── amity_fragment_community_member_settings.xml │ ├── xml │ └── network_security_config.xml │ ├── color │ └── amity_button_bg_selector.xml │ ├── anim │ ├── amity_animation_fade_in.xml │ └── amity_animation_fade_out.xml │ └── menu │ ├── amity_poll.xml │ ├── amity_community_member_report_user_menu.xml │ ├── amity_reply_action_menu_report.xml │ ├── amity_comment_action_menu_report.xml │ ├── amity_feed_action_menu_report_post.xml │ ├── amity_community_member_unreport_user_menu.xml │ ├── amity_feed_action_menu_unreport_post.xml │ ├── amity_reply_action_menu_unreport.xml │ ├── amity_comment_action_menu_unreport.xml │ ├── amity_pending_posts_action_menu_owner.xml │ ├── amity_feed_action_menu_already_reported.xml │ ├── amity_comment_action_menu_already_reported.xml │ ├── amity_community_home.xml │ ├── amity_feed_action_menu_owner.xml │ ├── amity_reply_action_menu_reply_owner.xml │ ├── amity_commnet_action_menu_comment_owner.xml │ ├── amity_feed_action_menu_admin.xml │ ├── amity_reply_action_menu_admin.xml │ ├── amity_upload_profile_picture.xml │ └── amity_commnet_action_menu_admin.xml ├── chat-compose ├── .gitignore ├── consumer-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── amity │ │ └── socialcloud │ │ └── uikit │ │ └── chat │ │ └── compose │ │ ├── live │ │ ├── elements │ │ │ └── AmityAvatarType.kt │ │ └── mention │ │ │ └── AmityMentionSuggestion.kt │ │ └── AmityChatBehaviorHelper.kt │ └── res │ └── layout │ └── amity_fragment_live_chat.xml ├── common-compose ├── .gitignore ├── consumer-rules.pro └── src │ └── main │ ├── res │ └── values │ │ └── strings.xml │ └── java │ └── com │ └── amity │ └── socialcloud │ └── uikit │ └── common │ ├── behavior │ ├── AmityBaseBehavior.kt │ └── AmityBaseBehaviorContext.kt │ ├── eventbus │ └── NetworkConnectionEventBus.kt │ ├── config │ └── AmityUIKitTheme.kt │ ├── infra │ ├── db │ │ └── entity │ │ │ ├── AmityAdRecency.kt │ │ │ ├── AmityNetworkConfig.kt │ │ │ └── AmityAdAsset.kt │ └── initializer │ │ ├── AmityUIKitInitializer.kt │ │ └── AmityAppContext.kt │ ├── networkconfig │ └── AmityNetworkConfigApi.kt │ ├── utils │ ├── AmityClientExt.kt │ ├── AmityIntentExt.kt │ └── AmityPostExt.kt │ ├── reaction │ ├── AmityReactionListPageAction.kt │ └── AmityReactionListPageState.kt │ └── ui │ ├── theme │ └── Shape.kt │ └── elements │ └── AmityNewsFeedDivider.kt ├── social-compose ├── .gitignore ├── consumer-rules.pro └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── amity │ │ │ └── socialcloud │ │ │ └── uikit │ │ │ └── community │ │ │ └── compose │ │ │ ├── ui │ │ │ └── components │ │ │ │ ├── video │ │ │ │ └── AmityVideoViewerActivity.kt │ │ │ │ └── feed │ │ │ │ └── user │ │ │ │ └── AmityUserFeedType.kt │ │ │ ├── post │ │ │ ├── detail │ │ │ │ ├── AmityPostDetailPageBehavior.kt │ │ │ │ └── components │ │ │ │ │ └── AmityPostContentComponentStyle.kt │ │ │ ├── composer │ │ │ │ └── AmityPostComposerPageBehavior.kt │ │ │ └── model │ │ │ │ └── AmityFileUploadState.kt │ │ │ ├── search │ │ │ └── global │ │ │ │ └── AmitySocialGlobalSearchPageBehavior.kt │ │ │ ├── user │ │ │ └── relationship │ │ │ │ └── AmityUserRelationshipPageTab.kt │ │ │ ├── socialhome │ │ │ └── AmitySocialHomePageTab.kt │ │ │ ├── community │ │ │ └── setup │ │ │ │ ├── AmityCommunitySetupPrivacyMode.kt │ │ │ │ └── AmityCommunitySetupPageMode.kt │ │ │ ├── story │ │ │ ├── draft │ │ │ │ └── AmityStoryMediaType.kt │ │ │ └── view │ │ │ │ └── AmityViewStoryPageType.kt │ │ │ ├── target │ │ │ └── AmityPostTargetSelectionPageType.kt │ │ │ └── utils │ │ │ └── ShareNativeAndroidSheet.kt │ └── res │ │ ├── drawable │ │ ├── gradient.xml │ │ ├── amity_ic_play.xml │ │ ├── amity_ic_story_ad_chevron_top.xml │ │ ├── amity_ic_alt_check.xml │ │ ├── amity_ic_post_target.xml │ │ ├── amity_ic_lock.xml │ │ ├── amity_ic_category_not_selected.xml │ │ ├── amity_ic_play_v4.xml │ │ ├── amity_ic_category_selection_disabled.xml │ │ ├── amity_ic_community_edit.xml │ │ └── amity_ic_story_comment_count.xml │ │ └── layout │ │ └── amity_exo_social_player.xml │ └── test │ └── java │ └── com │ └── amity │ └── socialcloud │ └── uikit │ └── community │ └── compose │ └── ExampleUnitTest.kt ├── amity-sample-code ├── .gitignore ├── consumer-rules.pro └── src │ ├── main │ ├── AndroidManifest.xml │ └── java │ │ └── com │ │ └── amity │ │ └── snipet │ │ └── verifier │ │ └── social │ │ └── user │ │ ├── blocked │ │ └── AmityBlockedUsersPageSample.kt │ │ └── edit │ │ └── AmityEditUserProfilePageSample.kt │ └── test │ └── java │ └── com │ └── amity │ └── snipet │ └── verifier │ └── ExampleUnitTest.kt ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── settings.gradle └── README.md /chat/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /amity-uikit/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /chat/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /common/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /logging/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /logging/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sample/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /social/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /social/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /amity-uikit/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /chat-compose/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /chat-compose/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /common-compose/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /common-compose/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /social-compose/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /social-compose/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /amity-sample-code/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /amity-sample-code/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /amity-uikit/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /amity-sample-code/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /social-compose/src/main/java/com/amity/socialcloud/uikit/community/compose/ui/components/video/AmityVideoViewerActivity.kt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmityCo/Amity-Social-Cloud-UIKit-Android-OpenSource/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /common-compose/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /sample/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 20sp 4 | -------------------------------------------------------------------------------- /logging/src/main/res/values/uikit_logging_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | -------------------------------------------------------------------------------- /sample/src/main/res/values/uikit_logging_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | -------------------------------------------------------------------------------- /sample/src/main/res/values/upstra_sdk_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | sc-staging 4 | -------------------------------------------------------------------------------- /common/src/main/res/values/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 180 4 | -------------------------------------------------------------------------------- /common-compose/src/main/java/com/amity/socialcloud/uikit/common/behavior/AmityBaseBehavior.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.behavior 2 | 3 | open class AmityBaseBehavior -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_ic_star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmityCo/Amity-Social-Cloud-UIKit-Android-OpenSource/HEAD/common/src/main/res/drawable/amity_ic_star.png -------------------------------------------------------------------------------- /sample/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmityCo/Amity-Social-Cloud-UIKit-Android-OpenSource/HEAD/sample/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /sample/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmityCo/Amity-Social-Cloud-UIKit-Android-OpenSource/HEAD/sample/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /sample/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmityCo/Amity-Social-Cloud-UIKit-Android-OpenSource/HEAD/sample/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/components/AmityCommunityHeader.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.components 2 | 3 | class AmityCommunityHeader { 4 | } -------------------------------------------------------------------------------- /sample/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmityCo/Amity-Social-Cloud-UIKit-Android-OpenSource/HEAD/sample/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /sample/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmityCo/Amity-Social-Cloud-UIKit-Android-OpenSource/HEAD/sample/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /sample/src/main/res/values/theme.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_ic_plus_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmityCo/Amity-Social-Cloud-UIKit-Android-OpenSource/HEAD/common/src/main/res/drawable/amity_ic_plus_white.png -------------------------------------------------------------------------------- /sample/src/main/res/values-night/theme.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/views/AmityCommunityFeedView.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.views 2 | 3 | class AmityCommunityFeedView { 4 | } 5 | -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/views/AmityTrendingChannelsView.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.views 2 | 3 | class AmityTrendingChannelsView { 4 | } 5 | -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/model/AmityPostDummyItem.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.model 2 | 3 | class AmityPostDummyItem() { 4 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/events/AmityFeedRefreshEvent.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.events 2 | 3 | class AmityFeedRefreshEvent { 4 | } -------------------------------------------------------------------------------- /sample/src/main/res/mipmap-hdpi/ic_launcher_adaptive_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmityCo/Amity-Social-Cloud-UIKit-Android-OpenSource/HEAD/sample/src/main/res/mipmap-hdpi/ic_launcher_adaptive_back.png -------------------------------------------------------------------------------- /sample/src/main/res/mipmap-hdpi/ic_launcher_adaptive_fore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmityCo/Amity-Social-Cloud-UIKit-Android-OpenSource/HEAD/sample/src/main/res/mipmap-hdpi/ic_launcher_adaptive_fore.png -------------------------------------------------------------------------------- /sample/src/main/res/mipmap-mdpi/ic_launcher_adaptive_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmityCo/Amity-Social-Cloud-UIKit-Android-OpenSource/HEAD/sample/src/main/res/mipmap-mdpi/ic_launcher_adaptive_back.png -------------------------------------------------------------------------------- /sample/src/main/res/mipmap-mdpi/ic_launcher_adaptive_fore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmityCo/Amity-Social-Cloud-UIKit-Android-OpenSource/HEAD/sample/src/main/res/mipmap-mdpi/ic_launcher_adaptive_fore.png -------------------------------------------------------------------------------- /sample/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmityCo/Amity-Social-Cloud-UIKit-Android-OpenSource/HEAD/sample/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_back.png -------------------------------------------------------------------------------- /sample/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_fore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmityCo/Amity-Social-Cloud-UIKit-Android-OpenSource/HEAD/sample/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_fore.png -------------------------------------------------------------------------------- /sample/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmityCo/Amity-Social-Cloud-UIKit-Android-OpenSource/HEAD/sample/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_back.png -------------------------------------------------------------------------------- /sample/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_fore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmityCo/Amity-Social-Cloud-UIKit-Android-OpenSource/HEAD/sample/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_fore.png -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/events/AmityCommentRefreshEvent.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.events 2 | 3 | class AmityCommentRefreshEvent { 4 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/utils/AmityShareType.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.utils 2 | 3 | enum class AmityShareType { 4 | MY_TIMELINE, GROUP, EXTERNAL 5 | } -------------------------------------------------------------------------------- /sample/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmityCo/Amity-Social-Cloud-UIKit-Android-OpenSource/HEAD/sample/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_back.png -------------------------------------------------------------------------------- /sample/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_fore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmityCo/Amity-Social-Cloud-UIKit-Android-OpenSource/HEAD/sample/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_fore.png -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityPostMediaClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | interface AmityPostMediaClickListener -------------------------------------------------------------------------------- /sample/src/main/res/values/amity_uikit_social_configs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | 5 | -------------------------------------------------------------------------------- /social/src/main/res/values/amity_uikit_social_configs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | 5 | -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/components/AmityLongPressListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.components 2 | 3 | interface AmityLongPressListener { 4 | 5 | fun onLongPress() 6 | } -------------------------------------------------------------------------------- /chat-compose/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/util/AmityNewsFeedEvents.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.util 2 | 3 | object AmityNewsFeedEvents { 4 | var newPostCreated = false 5 | } -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_view_image_post_placeholder.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/common/views/AmityColorShade.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.common.views 2 | 3 | enum class AmityColorShade { 4 | DEFAULT, SHADE1, SHADE2, SHADE3, SHADE4 5 | } -------------------------------------------------------------------------------- /social-compose/src/main/java/com/amity/socialcloud/uikit/community/compose/post/detail/AmityPostDetailPageBehavior.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.compose.post.detail 2 | 3 | open class AmityPostDetailPageBehavior { 4 | } -------------------------------------------------------------------------------- /chat-compose/src/main/java/com/amity/socialcloud/uikit/chat/compose/live/elements/AmityAvatarType.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.chat.compose.live.elements 2 | 3 | enum class AmityAvatarType { 4 | USER, 5 | MENTION_ALL 6 | } -------------------------------------------------------------------------------- /chat/src/main/java/com/amity/socialcloud/uikit/chat/messages/viewModel/AmityUnknownMsgViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.chat.messages.viewModel 2 | 3 | class AmityUnknownMsgViewModel : AmityChatMessageBaseViewModel() { 4 | } -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/components/AmityMessageListListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.components 2 | 3 | interface AmityMessageListListener { 4 | fun onMessageClicked(position: Int) 5 | } -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/utils/AmityProvider.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.utils 2 | 3 | import androidx.core.content.FileProvider 4 | 5 | class AmityProvider : FileProvider() { 6 | 7 | 8 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/model/FileUploadState.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.model 2 | 3 | enum class FileUploadState { 4 | PENDING, UPLOADING, COMPLETE, FAILED 5 | } -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/linkpreview/models/AmityPreviewMetadataException.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.linkpreview.models 2 | 3 | class AmityPreviewMetadataException(val url: String) : Exception() -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_empty.xml: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /social-compose/src/main/java/com/amity/socialcloud/uikit/community/compose/post/composer/AmityPostComposerPageBehavior.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.compose.post.composer 2 | 3 | open class AmityPostComposerPageBehavior { 4 | } -------------------------------------------------------------------------------- /social/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 4dp 5 | 336dp 6 | -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/data/PostReviewBannerData.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.data 2 | 3 | data class PostReviewBannerData(val isReviewer: Boolean, val postCount: Int, val isVisible: Boolean) 4 | 5 | -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityPostActionShareListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | interface AmityPostActionShareListener { 4 | fun onShareAction() 5 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/util/AmityTimelineType.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.util 2 | 3 | enum class AmityTimelineType { 4 | COMMUNITY, GLOBAL, OTHER_USER, MY_TIMELINE, NONE 5 | } -------------------------------------------------------------------------------- /chat/src/main/java/com/amity/socialcloud/uikit/chat/messages/viewHolder/AmityMessageItemListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.chat.messages.viewHolder 2 | 3 | interface AmityMessageItemListener { 4 | fun onMessageItemClicked(position: Int) 5 | } -------------------------------------------------------------------------------- /social-compose/src/main/java/com/amity/socialcloud/uikit/community/compose/search/global/AmitySocialGlobalSearchPageBehavior.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.compose.search.global 2 | 3 | open class AmitySocialGlobalSearchPageBehavior { 4 | 5 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/feed/settings/AmityPostSharingTarget.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.feed.settings 2 | 3 | enum class AmityPostSharingTarget { 4 | OriginFeed, MyFeed, PublicCommunity, PrivateCommunity, External 5 | } -------------------------------------------------------------------------------- /chat/src/main/java/com/amity/socialcloud/uikit/chat/home/callback/AmityRecentChatItemClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.chat.home.callback 2 | 3 | interface AmityRecentChatItemClickListener { 4 | fun onRecentChatItemClick(channelId: String) 5 | } -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/components/AmityToolBarClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.components 2 | 3 | interface AmityToolBarClickListener { 4 | 5 | fun leftIconClick() 6 | 7 | fun rightIconClick() 8 | } -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_exo_control_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip 3 | distributionPath=wrapper/dists 4 | zipStorePath=wrapper/dists 5 | zipStoreBase=GRADLE_USER_HOME 6 | 7 | -------------------------------------------------------------------------------- /logging/build.gradle: -------------------------------------------------------------------------------- 1 | apply from: "../buildsystem/submodule.gradle" 2 | apply plugin: 'com.android.library' 3 | 4 | dependencies { 5 | implementation "com.jakewharton.timber:timber:4.7.1" 6 | implementation "org.jetbrains.kotlin:kotlin-reflect:1.4.21" 7 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityPostActionLikeListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | interface AmityPostActionLikeListener { 4 | fun onLikeAction(liked: Boolean) 5 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityPostItemClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | interface AmityPostItemClickListener { 4 | fun onClickPostItem(postId: String) 5 | } -------------------------------------------------------------------------------- /social/src/main/res/layout/amity_item_post_dummy.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /chat/src/main/res/menu/amity_text_sender_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /social-compose/src/main/java/com/amity/socialcloud/uikit/community/compose/post/model/AmityFileUploadState.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.compose.post.model 2 | 3 | 4 | enum class AmityFileUploadState { 5 | PENDING, UPLOADING, COMPLETE, FAILED 6 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityCreatePostButtonClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | interface AmityCreatePostButtonClickListener { 4 | fun onClickCreatePost() 5 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityPostImageItemClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | interface AmityPostImageItemClickListener { 4 | fun onClickItem(position: Int) 5 | } -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_bg_image_count.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityCreateCommunityClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | interface AmityCreateCommunityClickListener { 4 | fun onClickCreateCommunity() 5 | } -------------------------------------------------------------------------------- /sample/src/main/res/drawable/amity_live_chat_bottom_sheet_light.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /social/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #EBECEF 4 | #636878 5 | #898E9E 6 | -------------------------------------------------------------------------------- /sample/src/main/res/drawable/amity_live_chat_bottom_sheet_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityExploreCommunityItemClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | interface AmityExploreCommunityItemClickListener { 4 | fun onClickExploreCommunity() 5 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/profile/listener/AmityEditUserProfileClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.profile.listener 2 | 3 | interface AmityEditUserProfileClickListener { 4 | fun onClickEditUserProfile(userId: String?) 5 | } -------------------------------------------------------------------------------- /common/src/main/res/xml/amity_file_path.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /social-compose/src/main/java/com/amity/socialcloud/uikit/community/compose/user/relationship/AmityUserRelationshipPageTab.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.compose.user.relationship 2 | 3 | enum class AmityUserRelationshipPageTab { 4 | FOLLOWING, 5 | FOLLOWER; 6 | } -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_btn_active.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_item_comment_separator.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | -------------------------------------------------------------------------------- /social-compose/src/main/java/com/amity/socialcloud/uikit/community/compose/socialhome/AmitySocialHomePageTab.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.compose.socialhome 2 | 3 | enum class AmitySocialHomePageTab { 4 | NEWSFEED, 5 | EXPLORE, 6 | CLIPS, 7 | MY_COMMUNITIES; 8 | } -------------------------------------------------------------------------------- /social-compose/src/main/java/com/amity/socialcloud/uikit/community/compose/ui/components/feed/user/AmityUserFeedType.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.compose.ui.components.feed.user 2 | 3 | enum class AmityUserFeedType { 4 | POST, 5 | IMAGE, 6 | CLIP, 7 | VIDEO; 8 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/events/PostOptionClickEvent.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.events 2 | 3 | import com.amity.socialcloud.sdk.model.social.post.AmityPost 4 | 5 | class PostOptionClickEvent(val post: AmityPost) { 6 | 7 | } -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/imagepreview/AmityPreviewImage.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.imagepreview 2 | 3 | import android.os.Parcelable 4 | import kotlinx.parcelize.Parcelize 5 | 6 | @Parcelize 7 | data class AmityPreviewImage(val url: String) : Parcelable -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/model/AmityEventType.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.model 2 | 3 | /** 4 | * Data class for event type 5 | * @author sumitlakra 6 | * @date 06/01/2020 7 | */ 8 | data class AmityEventType(val type: AmityEventIdentifier, val dataObj: Any) -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_rounded_primary_color_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_rounded_corner_red.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_rounded_grey_color_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_rounded_primary_color_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /chat/src/main/java/com/amity/socialcloud/uikit/chat/messages/viewHolder/AmityAudioPlayListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.chat.messages.viewHolder 2 | 3 | interface AmityAudioPlayListener { 4 | 5 | fun playAudio(vh: AmityAudioMsgBaseViewHolder) 6 | 7 | fun messageDeleted(msgId: String) 8 | } -------------------------------------------------------------------------------- /social-compose/src/main/java/com/amity/socialcloud/uikit/community/compose/community/setup/AmityCommunitySetupPrivacyMode.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.compose.community.setup 2 | 3 | enum class AmityCommunitySetupPrivacyMode { 4 | PUBLIC, 5 | PRIVATE_VISIBLE, 6 | PRIVATE_HIDDEN 7 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/events/CommentOptionClickEvent.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.events 2 | 3 | import com.amity.socialcloud.sdk.model.social.comment.AmityComment 4 | 5 | class CommentOptionClickEvent(val comment: AmityComment) { 6 | 7 | } -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_feed_item_separator.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/common/views/avatar/AmityAvatarShape.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.common.views.avatar 2 | 3 | 4 | class AmityAvatarShape { 5 | 6 | companion object { 7 | const val Circle = 0 8 | const val Rectangle = 1 9 | } 10 | } -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/common/views/button/AmityButtonType.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.common.views.button 2 | 3 | 4 | class AmityButtonType { 5 | 6 | companion object { 7 | const val Outlined = 0 8 | const val Solid = 1 9 | } 10 | } -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/components/AmityAudioRecorderListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.components 2 | 3 | import java.io.File 4 | 5 | interface AmityAudioRecorderListener { 6 | 7 | fun onFileRecorded(audioFile: File?) 8 | 9 | fun showMessage() 10 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/adapter/AmityPostImageChildrenItem.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.adapter 2 | 3 | import com.amity.socialcloud.sdk.model.core.file.AmityImage 4 | 5 | class AmityPostImageChildrenItem(val images: List) { 6 | 7 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/events/AmityCommentReplyIntentEvent.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.events 2 | 3 | import com.amity.socialcloud.sdk.model.social.comment.AmityComment 4 | 5 | class AmityCommentReplyIntentEvent(val comment: AmityComment) { 6 | } -------------------------------------------------------------------------------- /chat/src/main/java/com/amity/socialcloud/uikit/chat/messages/composebar/AmityChatRoomComposeBar.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.chat.messages.composebar 2 | 3 | sealed class AmityChatRoomComposeBar { 4 | 5 | object DEFAULT : AmityChatRoomComposeBar() 6 | 7 | object TEXT : AmityChatRoomComposeBar() 8 | 9 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/explore/viewmodel/AmityCategorySelectionViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.explore.viewmodel 2 | 3 | import com.amity.socialcloud.uikit.common.base.AmityBaseViewModel 4 | 5 | class AmityCategorySelectionViewModel : AmityBaseViewModel() { 6 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityUserClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | import com.amity.socialcloud.sdk.model.core.user.AmityUser 4 | 5 | interface AmityUserClickListener { 6 | fun onClickUser(user: AmityUser) 7 | } -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_bg_poll_draft_answer.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_rounded_corner_translucent.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /social/src/main/res/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /chat/src/main/res/layout/amity_fragment_chat_room.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /sample/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/components/AmityChatComposeBarClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.components 2 | 3 | interface AmityChatComposeBarClickListener { 4 | 5 | fun onCameraClicked() 6 | fun onAlbumClicked() 7 | fun onFileClicked() 8 | fun onLocationCLicked() 9 | } -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_bg_border.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/model/AmityBasePostContentItem.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.model 2 | 3 | import com.amity.socialcloud.sdk.model.social.post.AmityPost 4 | 5 | data class AmityBasePostContentItem(val post: AmityPost, var showFullContent: Boolean = false) 6 | -------------------------------------------------------------------------------- /social/src/main/res/color/amity_button_bg_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/base/AmityViewHolder.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.base 2 | 3 | import android.view.View 4 | import androidx.recyclerview.widget.RecyclerView 5 | 6 | abstract class AmityViewHolder(view: View) : RecyclerView.ViewHolder(view) { 7 | 8 | abstract fun bind(data: T) 9 | } -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/utils/AmityFileDownloadStatus.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.utils 2 | 3 | import android.net.Uri 4 | 5 | interface AmityFileDownloadStatus { 6 | fun onDownloadComplete(fileUri: Uri) 7 | fun onError(error: String?) 8 | fun onProgressUpdate(progress: Int) 9 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityPostMoreOptionClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | import com.amity.socialcloud.sdk.model.social.post.AmityPost 4 | 5 | interface AmityPostMoreOptionClickListener { 6 | fun onClickMoreOption(post:AmityPost) 7 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityPostOptionClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | import com.amity.socialcloud.sdk.model.social.post.AmityPost 4 | 5 | interface AmityPostOptionClickListener { 6 | fun onClickPostOption(post: AmityPost) 7 | } -------------------------------------------------------------------------------- /social/src/main/res/layout/amity_view_separator.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | -------------------------------------------------------------------------------- /chat/src/main/res/layout/amity_dialog_chat.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /common/src/main/res/color/material_btn_text_color_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /chat-compose/src/main/java/com/amity/socialcloud/uikit/chat/compose/AmityChatBehaviorHelper.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.chat.compose 2 | 3 | import com.amity.socialcloud.uikit.common.behavior.AmityGlobalBehavior 4 | object AmityChatBehaviorHelper { 5 | 6 | var globalBehavior: AmityGlobalBehavior = 7 | AmityGlobalBehavior() 8 | } -------------------------------------------------------------------------------- /chat/src/main/java/com/amity/socialcloud/uikit/chat/home/callback/AmityDirectoryFragmentDelegate.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.chat.home.callback 2 | 3 | import com.amity.socialcloud.uikit.chat.directory.fragment.AmityDirectoryFragment 4 | 5 | interface AmityDirectoryFragmentDelegate { 6 | fun directoryFragment(): AmityDirectoryFragment 7 | } -------------------------------------------------------------------------------- /common/src/main/res/color/material_btn_bg_color_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /common/src/main/res/color/material_fab_bg_color_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /common/src/main/res/color/material_fab_icon_text_color_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityPostActionAvatarClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | import com.amity.socialcloud.sdk.model.core.user.AmityUser 4 | 5 | interface AmityPostActionAvatarClickListener { 6 | fun onClickUserAvatar(user: AmityUser) 7 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/profile/listener/AmityFeedFragmentDelegate.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.profile.listener 2 | 3 | import com.amity.socialcloud.uikit.community.newsfeed.fragment.AmityFeedFragment 4 | 5 | interface AmityFeedFragmentDelegate { 6 | fun getFeedFragment(): AmityFeedFragment 7 | } -------------------------------------------------------------------------------- /chat/src/main/java/com/amity/socialcloud/uikit/chat/home/callback/AmityRecentChatFragmentDelegate.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.chat.home.callback 2 | 3 | import com.amity.socialcloud.uikit.chat.recent.fragment.AmityRecentChatFragment 4 | 5 | interface AmityRecentChatFragmentDelegate { 6 | fun recentChatFragment(): AmityRecentChatFragment 7 | } -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/memberpicker/listener/AmitySelectMemberListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.memberpicker.listener 2 | 3 | import com.amity.socialcloud.sdk.model.core.user.AmityUser 4 | 5 | interface AmitySelectMemberListener { 6 | 7 | fun onMemberClicked(member: AmityUser, position: Int) 8 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/detailpage/listener/AmityMessageClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.detailpage.listener 2 | 3 | import com.amity.socialcloud.sdk.model.social.community.AmityCommunity 4 | 5 | interface AmityMessageClickListener { 6 | fun onClickMessage(community: AmityCommunity?) 7 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/members/AmityMemberClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.members 2 | 3 | import com.amity.socialcloud.sdk.model.social.member.AmityCommunityMember 4 | 5 | interface AmityMemberClickListener { 6 | 7 | fun onCommunityMembershipSelected(membership: AmityCommunityMember) 8 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/events/PollVoteClickEvent.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.events 2 | 3 | sealed class PollVoteClickEvent(val pollId: String, val answerIds: List) { 4 | 5 | class VOTE(pollId: String, answerIds: List) : PollVoteClickEvent(pollId, answerIds) 6 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityCommunityClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | import com.amity.socialcloud.sdk.model.social.community.AmityCommunity 4 | 5 | interface AmityCommunityClickListener { 6 | fun onClickCommunity(community: AmityCommunity) 7 | } -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/common/views/bottomsheet/AmityMenuItemClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.common.views.bottomsheet 2 | 3 | import com.amity.socialcloud.uikit.common.model.AmityMenuItem 4 | 5 | 6 | interface AmityMenuItemClickListener { 7 | 8 | fun onMenuItemClicked(menuItem: AmityMenuItem) 9 | } -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/common/views/dialog/bottomsheet/BottomSheetMenuItem.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.common.views.dialog.bottomsheet 2 | 3 | data class BottomSheetMenuItem( 4 | val iconResId: Int? = null, 5 | val colorResId: Int? = null, 6 | val titleResId: Int, 7 | val action: () -> Unit 8 | ) -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityPostLivestreamClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | import com.amity.socialcloud.sdk.model.video.stream.AmityStream 4 | 5 | interface AmityPostLivestreamClickListener { 6 | fun onClickLivestreamVideo(stream: AmityStream) 7 | } -------------------------------------------------------------------------------- /social/src/main/res/anim/amity_animation_fade_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | -------------------------------------------------------------------------------- /social/src/main/res/anim/amity_animation_fade_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_ic_dot.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | -------------------------------------------------------------------------------- /social/src/main/res/layout/amity_item_settings_margin.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /social/src/main/res/menu/amity_poll.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/model/AmityMenuItem.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.model 2 | 3 | import android.os.Parcelable 4 | import kotlinx.parcelize.Parcelize 5 | 6 | @Parcelize 7 | data class AmityMenuItem( 8 | val id: Int, 9 | val title: String, 10 | var isAlertItem: Boolean = false 11 | ) : Parcelable -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/data/AmitySelectCategoryItem.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.data 2 | 3 | import android.os.Parcelable 4 | import kotlinx.parcelize.Parcelize 5 | 6 | @Parcelize 7 | data class AmitySelectCategoryItem( 8 | var categoryId: String = "", 9 | var name: String = "" 10 | ) : Parcelable -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/explore/listener/AmityCommunityItemClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.explore.listener 2 | 3 | import com.amity.socialcloud.sdk.model.social.community.AmityCommunity 4 | 5 | interface AmityCommunityItemClickListener { 6 | fun onClick(community: AmityCommunity, position: Int) 7 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/home/listener/AmityNewsFeedFragmentDelegate.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.home.listener 2 | 3 | import com.amity.socialcloud.uikit.community.newsfeed.fragment.AmityNewsFeedFragment 4 | 5 | interface AmityNewsFeedFragmentDelegate { 6 | fun getNewsFeedFragment(): AmityNewsFeedFragment 7 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityPostFileItemClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | import com.amity.socialcloud.uikit.community.domain.model.AmityFileAttachment 4 | 5 | interface AmityPostFileItemClickListener { 6 | fun onClickFileItem(file: AmityFileAttachment) 7 | } -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/memberpicker/listener/AmitySelectedMemberListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.memberpicker.listener 2 | 3 | import com.amity.socialcloud.uikit.common.model.AmitySelectMemberItem 4 | 5 | interface AmitySelectedMemberListener { 6 | 7 | fun onMemberRemoved(memberAmity: AmitySelectMemberItem) 8 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/explore/listener/AmityCategoryItemClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.explore.listener 2 | 3 | import com.amity.socialcloud.sdk.model.social.category.AmityCommunityCategory 4 | 5 | interface AmityCategoryItemClickListener { 6 | fun onCategorySelected(category: AmityCommunityCategory) 7 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/home/listener/AmityGlobalFeedFragmentDelegate.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.home.listener 2 | 3 | import com.amity.socialcloud.uikit.community.newsfeed.fragment.AmityGlobalFeedFragment 4 | 5 | interface AmityGlobalFeedFragmentDelegate { 6 | fun getGlobalFeedFragment(): AmityGlobalFeedFragment 7 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/mycommunity/listener/AmityMyCommunityItemClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.mycommunity.listener 2 | 3 | import com.amity.socialcloud.sdk.model.social.community.AmityCommunity 4 | 5 | interface AmityMyCommunityItemClickListener { 6 | fun onCommunitySelected(community: AmityCommunity?) 7 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityCreatePostImageActionListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | import com.amity.socialcloud.uikit.community.newsfeed.model.PostMedia 4 | 5 | interface AmityCreatePostImageActionListener { 6 | fun onRemoveImage(postMedia: PostMedia, position: Int) 7 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityPostActionCommunityClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | import com.amity.socialcloud.sdk.model.social.community.AmityCommunity 4 | 5 | interface AmityPostActionCommunityClickListener { 6 | fun onClickCommunity(community: AmityCommunity) 7 | } -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_ic_ellipse.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/base/FragmentStoreOwnerMap.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.base 2 | 3 | import androidx.lifecycle.ViewModel 4 | import androidx.lifecycle.ViewModelStoreOwner 5 | 6 | class FragmentStoreOwnerMap: ViewModel() { 7 | val owners : HashMap = hashMapOf() 8 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityPostCommentReplyClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | import com.amity.socialcloud.sdk.model.social.comment.AmityComment 4 | 5 | interface AmityPostCommentReplyClickListener { 6 | fun onClickCommentReply(comment: AmityComment, position: Int) 7 | } -------------------------------------------------------------------------------- /social/src/main/res/layout/amity_item_community_category_list.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /common/src/main/res/color/material_btn_stroke_color_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /logging/src/main/java/com/amity/socialcloud/uikit/logging/AmityLoggingConfig.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.logging 2 | 3 | object AmityLoggingConfig { 4 | const val LOG_FOLDER_NAME = "UiKitLogs" 5 | const val VERBOSE = "VERBOSE" 6 | const val DEBUG = "DEBUG" 7 | const val INFO = "INFO" 8 | const val WARN = "WARN" 9 | const val ERROR = "ERROR" 10 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/data/CommunityProfileData.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.data 2 | 3 | import com.amity.socialcloud.sdk.model.social.community.AmityCommunity 4 | 5 | class CommunityProfileData( 6 | val community: AmityCommunity, 7 | val canEditCommunity: Boolean, 8 | val postReviewBanner: PostReviewBannerData, 9 | ) -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityCreatePostFileActionListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | import com.amity.socialcloud.uikit.community.domain.model.AmityFileAttachment 4 | 5 | interface AmityCreatePostFileActionListener { 6 | fun onRemoveFile(file: AmityFileAttachment, position: Int) 7 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityPostCommentShowAllReplyListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | import com.amity.socialcloud.sdk.model.social.comment.AmityComment 4 | 5 | interface AmityPostCommentShowAllReplyListener { 6 | fun onClickShowAllReplies(comment: AmityComment, position: Int) 7 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityPostImageClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | import com.amity.socialcloud.sdk.model.core.file.AmityImage 4 | 5 | interface AmityPostImageClickListener : AmityPostMediaClickListener { 6 | fun onClickImage(images: List, position: Int) 7 | } -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_ic_like_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /social/src/main/res/menu/amity_community_member_report_user_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | -------------------------------------------------------------------------------- /social/src/main/res/menu/amity_reply_action_menu_report.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | -------------------------------------------------------------------------------- /sample/src/main/java/com/amity/socialcloud/uikit/sample/env/Environment.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.sample.env 2 | 3 | import android.os.Parcelable 4 | import kotlinx.parcelize.Parcelize 5 | 6 | @Parcelize 7 | data class Environment( 8 | var apiKey: String, 9 | var httpUrl: String, 10 | var socketUrl: String, 11 | var mqttBroker: String, 12 | ) : Parcelable -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_ic_dot_base.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /social/src/main/res/menu/amity_comment_action_menu_report.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | -------------------------------------------------------------------------------- /social/src/main/res/menu/amity_feed_action_menu_report_post.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | -------------------------------------------------------------------------------- /common-compose/src/main/java/com/amity/socialcloud/uikit/common/eventbus/NetworkConnectionEventBus.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.eventbus 2 | 3 | import com.amity.socialcloud.sdk.core.session.eventbus.BaseStateEventBus 4 | import com.amity.socialcloud.sdk.core.session.model.NetworkConnectionEvent 5 | 6 | object NetworkConnectionEventBus : BaseStateEventBus() -------------------------------------------------------------------------------- /sample/src/main/java/com/amity/socialcloud/uikit/sample/AmityMyTextMsgViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.sample 2 | 3 | import androidx.databinding.ObservableField 4 | import com.amity.socialcloud.uikit.chat.messages.viewModel.AmityChatMessageBaseViewModel 5 | 6 | class AmityMyTextMsgViewModel : AmityChatMessageBaseViewModel() { 7 | 8 | val text = ObservableField("") 9 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/detailpage/listener/AmityEditCommunityProfileClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.detailpage.listener 2 | 3 | import com.amity.socialcloud.sdk.model.social.community.AmityCommunity 4 | 5 | interface AmityEditCommunityProfileClickListener { 6 | fun onClickEditCommunityProfile(community: AmityCommunity?) 7 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/home/listener/AmityExploreFragmentFragmentDelegate.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.home.listener 2 | 3 | import com.amity.socialcloud.uikit.community.explore.fragments.AmityCommunityExplorerFragment 4 | 5 | interface AmityExploreFragmentFragmentDelegate { 6 | fun getExploreFragment(): AmityCommunityExplorerFragment 7 | } -------------------------------------------------------------------------------- /social/src/main/res/menu/amity_community_member_unreport_user_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | -------------------------------------------------------------------------------- /social/src/main/res/menu/amity_feed_action_menu_unreport_post.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | -------------------------------------------------------------------------------- /social/src/main/res/menu/amity_reply_action_menu_unreport.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityCreatePostCommunitySelectionListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | import com.amity.socialcloud.sdk.model.social.community.AmityCommunity 4 | 5 | interface AmityCreatePostCommunitySelectionListener { 6 | fun onClickCommunity(community: AmityCommunity, position: Int) 7 | } -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_btn_inactive.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /social/src/main/res/menu/amity_comment_action_menu_unreport.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | -------------------------------------------------------------------------------- /social/src/main/res/menu/amity_pending_posts_action_menu_owner.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/linkpreview/models/AmityPreviewUrlCacheItem.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.linkpreview.models 2 | 3 | import org.joda.time.DateTime 4 | 5 | 6 | open class AmityPreviewUrlCacheItem( 7 | val url: String, 8 | val editedAt: DateTime? 9 | ) 10 | 11 | class AmityPreviewNoUrl : AmityPreviewUrlCacheItem("", DateTime.now()) 12 | -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_arrow_upward.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityPostCommentShowMoreActionListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | import com.amity.socialcloud.sdk.model.social.comment.AmityComment 4 | 5 | interface AmityPostCommentShowMoreActionListener { 6 | fun onClickNewsFeedCommentShowMoreAction(comment: AmityComment, position: Int) 7 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityPostItemListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | import androidx.fragment.app.Fragment 4 | import com.amity.socialcloud.sdk.model.social.post.AmityPost 5 | 6 | interface AmityPostItemListener { 7 | 8 | fun onClickComment(post: AmityPost, fragment: Fragment) 9 | 10 | } -------------------------------------------------------------------------------- /social/src/main/res/menu/amity_feed_action_menu_already_reported.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_bg_view_replies.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | -------------------------------------------------------------------------------- /common/src/main/res/color/switch_btn_bg_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /common/src/main/res/layout/amity_bottom_sheet_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /sample/src/main/java/com/amity/socialcloud/uikit/sample/env/SampleEnv.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.sample.env 2 | 3 | object SampleEnv { 4 | const val LOCAL = "sc-local" 5 | const val DEV = "sc-dev" 6 | const val STAGING = "sc-staging" 7 | const val PRODUCTION_SG = "production-sg" 8 | const val PRODUCTION_US = "production-us" 9 | const val PRODUCTION_EU = "production-eu" 10 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/explore/listener/AmityCategoryPreviewFragmentDelegate.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.explore.listener 2 | 3 | import com.amity.socialcloud.uikit.community.explore.fragments.AmityCategoryPreviewFragment 4 | 5 | interface AmityCategoryPreviewFragmentDelegate { 6 | fun categoryPreviewCommunityFragment(): AmityCategoryPreviewFragment 7 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/explore/listener/AmityTrendingCommunityFragmentDelegate.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.explore.listener 2 | 3 | import com.amity.socialcloud.uikit.community.explore.fragments.AmityTrendingCommunityFragment 4 | 5 | interface AmityTrendingCommunityFragmentDelegate { 6 | fun trendingCommunityFragment(): AmityTrendingCommunityFragment 7 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityPostVideoClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | import com.amity.socialcloud.sdk.model.core.file.AmityImage 4 | 5 | interface AmityPostVideoClickListener : AmityPostMediaClickListener { 6 | fun onClickVideoThumbnail(parentPostId: String, images: List, position: Int) 7 | } -------------------------------------------------------------------------------- /social/src/main/res/menu/amity_comment_action_menu_already_reported.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | -------------------------------------------------------------------------------- /common-compose/src/main/java/com/amity/socialcloud/uikit/common/config/AmityUIKitTheme.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.config 2 | 3 | enum class AmityUIKitTheme(val key: String) { 4 | DEFAULT("default"), 5 | DARK("dark"), 6 | LIGHT("light"); 7 | 8 | companion object { 9 | fun enumOf(value: String): AmityUIKitTheme = values().find { it.key == value } ?: DEFAULT 10 | } 11 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityCommentItemListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | import androidx.fragment.app.Fragment 4 | import com.amity.socialcloud.sdk.model.social.comment.AmityComment 5 | 6 | interface AmityCommentItemListener { 7 | 8 | fun onClickReply(comment: AmityComment, fragment: Fragment) 9 | 10 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/model/AmityBasePostHeaderItem.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.model 2 | 3 | import com.amity.socialcloud.sdk.model.social.post.AmityPost 4 | 5 | data class AmityBasePostHeaderItem(val post: AmityPost, 6 | val showTarget: Boolean, 7 | val showOptions: Boolean = true) 8 | -------------------------------------------------------------------------------- /chat/src/main/res/drawable/amity_ic_arrow_down.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /common-compose/src/main/java/com/amity/socialcloud/uikit/common/infra/db/entity/AmityAdRecency.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.infra.db.entity 2 | 3 | import androidx.room.Entity 4 | import androidx.room.PrimaryKey 5 | import org.joda.time.DateTime 6 | 7 | @Entity(tableName = "ad_recency") 8 | data class AmityAdRecency( 9 | @PrimaryKey 10 | val adId: String, 11 | val lastSeen: DateTime 12 | ) -------------------------------------------------------------------------------- /common-compose/src/main/java/com/amity/socialcloud/uikit/common/networkconfig/AmityNetworkConfigApi.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.networkconfig 2 | 3 | import com.google.gson.JsonObject 4 | import io.reactivex.rxjava3.core.Single 5 | import retrofit2.http.GET 6 | 7 | interface AmityNetworkConfigApi { 8 | @GET("api/v3/network-settings/uikit") 9 | fun getNetworkConfig(): Single 10 | } -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/base/FragmentStoreOwner.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.base 2 | 3 | import androidx.lifecycle.ViewModelStore 4 | import androidx.lifecycle.ViewModelStoreOwner 5 | 6 | class FragmentStoreOwner: ViewModelStoreOwner { 7 | private val store = ViewModelStore() 8 | 9 | override val viewModelStore: ViewModelStore 10 | get() = store 11 | } -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_ic_arrow_back.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /common/src/main/res/color/radio_btn_bg_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/explore/listener/AmityRecommendedCommunityFragmentDelegate.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.explore.listener 2 | 3 | import com.amity.socialcloud.uikit.community.explore.fragments.AmityRecommendedCommunityFragment 4 | 5 | interface AmityRecommendedCommunityFragmentDelegate { 6 | fun recommendedCommunityFragment(): AmityRecommendedCommunityFragment 7 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/home/listener/AmityMyCommunityListPreviewFragmentDelegate.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.home.listener 2 | 3 | import com.amity.socialcloud.uikit.community.mycommunity.fragment.AmityMyCommunityPreviewFragment 4 | 5 | interface AmityMyCommunityListPreviewFragmentDelegate { 6 | fun getMyCommunityListPreviewFragment(): AmityMyCommunityPreviewFragment 7 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/setting/user/AmityUserSettingsMenuCreator.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.setting.user 2 | 3 | import com.amity.socialcloud.uikit.community.setting.AmitySettingsItem 4 | 5 | interface AmityUserSettingsMenuCreator { 6 | 7 | fun createBasicInfoHeader(): AmitySettingsItem.Header 8 | fun createEditProfileMenu(): AmitySettingsItem.NavigationContent 9 | } -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/linkpreview/models/AmityPreviewMetadataCacheItem.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.linkpreview.models 2 | 3 | import org.joda.time.DateTime 4 | 5 | 6 | data class AmityPreviewMetadataCacheItem( 7 | val url: String = "", 8 | val domain: String = "", 9 | val title: String = "", 10 | val imageUrl: String = "", 11 | val timestamp: DateTime 12 | ) -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_ic_add.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /sample/src/main/java/com/amity/socialcloud/uikit/sample/env/SampleUrl.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.sample.env 2 | 3 | import com.amity.socialcloud.sdk.api.core.endpoint.AmityEndpoint 4 | 5 | object SampleUrl { 6 | 7 | fun get(): String { 8 | return get(SampleEnv.PRODUCTION_SG) 9 | } 10 | 11 | fun get(environment: String): String { 12 | return AmityEndpoint.SG.httpEndpoint 13 | } 14 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/events/PostReviewClickEvent.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.events 2 | 3 | import com.amity.socialcloud.sdk.model.social.post.AmityPost 4 | 5 | sealed class PostReviewClickEvent(val post: AmityPost) { 6 | 7 | class ACCEPT(post: AmityPost) : PostReviewClickEvent(post) 8 | class DECLINE(post: AmityPost) : PostReviewClickEvent(post) 9 | } -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_ic_default_ring.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 10 | -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/adapter/AmityPostDummyViewHolder.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.adapter 2 | 3 | import androidx.recyclerview.widget.RecyclerView 4 | import com.amity.socialcloud.uikit.community.databinding.AmityItemPostDummyBinding 5 | 6 | class AmityPostDummyViewHolder(binding: AmityItemPostDummyBinding) : RecyclerView.ViewHolder(binding.root) { 7 | 8 | 9 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/events/PostGalleryClickEvent.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.events 2 | 3 | import com.amity.socialcloud.sdk.model.social.post.AmityPost 4 | 5 | sealed class PostGalleryClickEvent { 6 | 7 | 8 | class Image(val post: AmityPost) : PostGalleryClickEvent() 9 | 10 | class Video(val post: AmityPost) : PostGalleryClickEvent() 11 | 12 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/setting/story/AmityStorySettingsMenuCreator.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.setting.story 2 | 3 | import com.amity.socialcloud.uikit.community.setting.AmitySettingsItem 4 | import io.reactivex.rxjava3.core.Flowable 5 | 6 | interface AmityStorySettingsMenuCreator { 7 | fun createAllowCommentMenu(isChecked: Flowable): AmitySettingsItem.ToggleContent 8 | } -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_bg_poll_add_draft_answer.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /chat/src/main/res/layout/amity_fragment_create_group_chat.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /common-compose/src/main/java/com/amity/socialcloud/uikit/common/infra/db/entity/AmityNetworkConfig.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.infra.db.entity 2 | 3 | import androidx.room.Entity 4 | import androidx.room.PrimaryKey 5 | import com.google.gson.JsonObject 6 | 7 | 8 | @Entity(tableName = "network_config") 9 | data class AmityNetworkConfig( 10 | @PrimaryKey 11 | var id: String, 12 | var config: JsonObject? 13 | ) -------------------------------------------------------------------------------- /chat/src/main/res/drawable/amity_ic_check.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /chat/src/main/res/drawable/amity_ic_count.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_bg_search.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | google() 4 | mavenCentral() 5 | gradlePluginPortal() 6 | } 7 | } 8 | 9 | include ':amity-uikit' 10 | rootProject.name = 'SocialPlusUIKit' 11 | include ':chat' 12 | include ':sample' 13 | include ':common' 14 | include ':social' 15 | include ':social-compose' 16 | include ':amity-sample-code' 17 | include ':chat-compose' 18 | include ':common-compose' 19 | -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_bg_avatar_overlay.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_ic_close.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /sample/src/main/java/com/amity/socialcloud/uikit/sample/env/SampleBroker.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.sample.env 2 | 3 | import com.amity.socialcloud.sdk.api.core.endpoint.AmityEndpoint 4 | 5 | 6 | object SampleBroker { 7 | 8 | fun get(): String { 9 | return get(SampleEnv.PRODUCTION_SG) 10 | } 11 | 12 | fun get(environment: String): String { 13 | return AmityEndpoint.SG.mqttEndpoint 14 | } 15 | 16 | } -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_bg_poll_add_draft_answer_error.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_bg_post_attachment_options.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/memberpicker/listener/AmityAddedMemberClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.memberpicker.listener 2 | 3 | import com.amity.socialcloud.uikit.common.model.AmitySelectMemberItem 4 | 5 | interface AmityAddedMemberClickListener { 6 | 7 | fun onMemberRemoved(itemAmity: AmitySelectMemberItem) 8 | 9 | fun onAddButtonClicked() 10 | 11 | fun onMemberCountClicked() 12 | } -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_compose_bar_send_icon.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/viewholder/DeletedCommentViewHolder.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.viewholder 2 | 3 | import androidx.recyclerview.widget.RecyclerView 4 | import com.amity.socialcloud.uikit.community.databinding.AmityItemDeletedRootCommentBinding 5 | 6 | class DeletedCommentViewHolder(binding: AmityItemDeletedRootCommentBinding) : RecyclerView.ViewHolder(binding.root) { 7 | 8 | 9 | } -------------------------------------------------------------------------------- /chat/src/main/res/menu/amity_chat_home.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 12 | 13 | -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_ic_avatar_placeholder.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /logging/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /sample/src/main/res/drawable/amity_compose_bar_send_icon.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/home/fragments/AmityCommunityHomeViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.home.fragments 2 | 3 | import androidx.databinding.ObservableBoolean 4 | import com.amity.socialcloud.uikit.common.base.AmityBaseViewModel 5 | 6 | class AmityCommunityHomeViewModel : AmityBaseViewModel() { 7 | var isSearchMode = ObservableBoolean(false) 8 | val emptySearchString = ObservableBoolean(true) 9 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/setting/postreview/AmityPostReviewSettingsMenuCreator.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.setting.postreview 2 | 3 | import com.amity.socialcloud.uikit.community.setting.AmitySettingsItem 4 | import io.reactivex.rxjava3.core.Flowable 5 | 6 | interface AmityPostReviewSettingsMenuCreator { 7 | fun createApproveMemberPostMenu(isChecked: Flowable): AmitySettingsItem.ToggleContent 8 | } -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_bg_avatar_overlay_with_gradient.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_ic_cross_black.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /chat/src/main/res/menu/amity_chat_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 11 | 12 | -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/model/AmitySelectMemberItem.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.model 2 | 3 | import android.os.Parcelable 4 | import kotlinx.parcelize.Parcelize 5 | 6 | 7 | @Parcelize 8 | data class AmitySelectMemberItem( 9 | var id: String = "", 10 | var avatarUrl: String = "", 11 | var name: String = "", 12 | var subTitle: String = "", 13 | var isSelected: Boolean = false 14 | ) : Parcelable -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/events/CommentContentClickEvent.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.events 2 | 3 | import com.amity.socialcloud.sdk.model.social.comment.AmityComment 4 | import com.amity.socialcloud.sdk.model.social.post.AmityPost 5 | 6 | sealed class CommentContentClickEvent { 7 | 8 | class Text(val comment: AmityComment, val post: AmityPost?): CommentContentClickEvent() 9 | 10 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/model/AmityBasePostItem.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.model 2 | 3 | import com.amity.socialcloud.sdk.model.social.post.AmityPost 4 | 5 | data class AmityBasePostItem( 6 | val post: AmityPost, 7 | val headerItems: List, 8 | val contentItems: List, 9 | val footerItems: List 10 | ) 11 | -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_bg_comment_bubble.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | -------------------------------------------------------------------------------- /common-compose/src/main/java/com/amity/socialcloud/uikit/common/infra/db/entity/AmityAdAsset.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.infra.db.entity 2 | 3 | import android.app.DownloadManager 4 | import androidx.room.Entity 5 | import androidx.room.PrimaryKey 6 | 7 | 8 | @Entity(tableName = "ad_asset") 9 | data class AmityAdAsset( 10 | @PrimaryKey 11 | val fileUrl: String, 12 | val downloadStatus: Int = -1, 13 | val downloadId: Long = -1L 14 | ) -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/data/AmitySelectMemberItem.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.data 2 | 3 | import android.os.Parcelable 4 | import kotlinx.parcelize.Parcelize 5 | 6 | 7 | @Parcelize 8 | data class AmitySelectMemberItem( 9 | var id: String = "", 10 | var avatarUrl: String = "", 11 | var name: String = "", 12 | var subTitle: String = "", 13 | var isSelected: Boolean = false 14 | ) : Parcelable -------------------------------------------------------------------------------- /social/src/main/res/layout/amity_activity_edit_post.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_ic_expand_comment_box.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /social-compose/src/main/java/com/amity/socialcloud/uikit/community/compose/story/draft/AmityStoryMediaType.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.compose.story.draft 2 | 3 | import android.net.Uri 4 | import android.os.Parcelable 5 | import kotlinx.parcelize.Parcelize 6 | 7 | @Parcelize 8 | sealed class AmityStoryMediaType : Parcelable { 9 | data class Image(val uri: Uri) : AmityStoryMediaType() 10 | data class Video(val uri: Uri) : AmityStoryMediaType() 11 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/adapter/AmityGalleryUnknownPostViewHolder.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.adapter 2 | 3 | import androidx.recyclerview.widget.RecyclerView 4 | import com.amity.socialcloud.uikit.community.databinding.AmityItemGalleryPostUnknownBinding 5 | 6 | class AmityGalleryUnknownPostViewHolder constructor( 7 | binding: AmityItemGalleryPostUnknownBinding, 8 | ) : RecyclerView.ViewHolder(binding.root) -------------------------------------------------------------------------------- /common/src/main/res/layout/amity_activity_camera.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /social-compose/src/main/res/drawable/gradient.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 12 | -------------------------------------------------------------------------------- /social-compose/src/main/res/layout/amity_exo_social_player.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityPostCommentItemClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | import com.amity.socialcloud.sdk.model.core.user.AmityUser 4 | import com.amity.socialcloud.sdk.model.social.comment.AmityComment 5 | 6 | 7 | interface AmityPostCommentItemClickListener { 8 | fun onClickItem(comment: AmityComment, position: Int) 9 | fun onClickAvatar(user: AmityUser) 10 | } -------------------------------------------------------------------------------- /sample/src/main/java/com/amity/socialcloud/uikit/sample/AmityShareLinkToExternalApp.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.sample 2 | 3 | import android.content.Context 4 | import android.content.Intent 5 | 6 | fun Context.shareLinkToExternalApp(uri: String) { 7 | val shareIntent = Intent(Intent.ACTION_SEND) 8 | shareIntent.type = "text/plain" 9 | shareIntent.putExtra(Intent.EXTRA_TEXT, uri) 10 | startActivity(Intent.createChooser(shareIntent, "Share link using")) 11 | } -------------------------------------------------------------------------------- /chat-compose/src/main/java/com/amity/socialcloud/uikit/chat/compose/live/mention/AmityMentionSuggestion.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.chat.compose.live.mention 2 | 3 | import com.amity.socialcloud.sdk.model.core.user.AmityUser 4 | 5 | sealed class AmityMentionSuggestion { 6 | 7 | class USER( 8 | val user: AmityUser 9 | ) : AmityMentionSuggestion() 10 | 11 | class CHANNEL( 12 | val channelId: String 13 | ) : AmityMentionSuggestion() 14 | 15 | 16 | } -------------------------------------------------------------------------------- /amity-sample-code/src/test/java/com/amity/snipet/verifier/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.amity.snipet.verifier 2 | 3 | import org.junit.Assert.assertEquals 4 | import org.junit.Test 5 | 6 | /** 7 | * Example local unit test, which will execute on the development machine (host). 8 | * 9 | * See [testing documentation](http://d.android.com/tools/testing). 10 | */ 11 | class ExampleUnitTest { 12 | @Test 13 | fun addition_isCorrect() { 14 | assertEquals(4, 2 + 2) 15 | } 16 | } -------------------------------------------------------------------------------- /social-compose/src/main/java/com/amity/socialcloud/uikit/community/compose/story/view/AmityViewStoryPageType.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.compose.story.view 2 | 3 | import android.os.Parcelable 4 | import kotlinx.parcelize.Parcelize 5 | 6 | @Parcelize 7 | sealed class AmityViewStoryPageType : Parcelable { 8 | data class CommunityFeed(val communityId: String) : AmityViewStoryPageType() 9 | data class GlobalFeed(val communityId: String) : AmityViewStoryPageType() 10 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/viewmodel/UserViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.viewmodel 2 | 3 | import com.amity.socialcloud.sdk.api.core.AmityCoreClient 4 | import com.amity.socialcloud.sdk.model.core.user.AmityUser 5 | import io.reactivex.rxjava3.core.Flowable 6 | 7 | interface UserViewModel { 8 | 9 | fun getCurrentUser(): Flowable { 10 | return AmityCoreClient.getCurrentUser() 11 | } 12 | 13 | } -------------------------------------------------------------------------------- /common-compose/src/main/java/com/amity/socialcloud/uikit/common/infra/initializer/AmityUIKitInitializer.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.infra.initializer 2 | 3 | import android.content.Context 4 | import com.amity.socialcloud.uikit.common.ad.AmityAdEngine 5 | import com.amity.socialcloud.uikit.common.infra.db.AmityUIKitDB 6 | 7 | 8 | object AmityUIKitInitializer { 9 | 10 | @Synchronized 11 | fun init(context: Context) { 12 | AmityAppContext.init(context) 13 | } 14 | } -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/utils/AmityTagLogUtil.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.utils 2 | 3 | import timber.log.Timber 4 | 5 | fun getCurrentClassAndMethodNames(): String { 6 | val e = Thread.currentThread().stackTrace[3] 7 | val s = e.className 8 | return " " + s.substring(s.lastIndexOf('.') + 1, s.length) + "." + e.methodName 9 | } 10 | 11 | fun Throwable.logThrowable() { 12 | Timber.d("${getCurrentClassAndMethodNames()}$this") 13 | } -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/camera/AmityCameraActivity.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.camera 2 | 3 | import android.os.Bundle 4 | import androidx.appcompat.app.AppCompatActivity 5 | import com.amity.socialcloud.uikit.common.R 6 | 7 | class AmityCameraActivity : AppCompatActivity() { 8 | override fun onCreate(savedInstanceState: Bundle?) { 9 | super.onCreate(savedInstanceState) 10 | setContentView(R.layout.amity_activity_camera) 11 | } 12 | } -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_bg_transparent_button.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | 9 | 10 | 13 | 14 | -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_ic_tick_green.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_bg_bottom_naviation.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 9 | 10 | -------------------------------------------------------------------------------- /social/src/main/res/layout/amity_item_separate_content.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_ic_baseline_dehaze.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /sample/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /social/src/main/res/layout/amity_user_follower_home_fragment.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_v4_radio_button.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /chat/src/main/res/drawable/amity_ic_play.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /social-compose/src/main/java/com/amity/socialcloud/uikit/community/compose/post/detail/components/AmityPostContentComponentStyle.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.compose.post.detail.components 2 | 3 | enum class AmityPostContentComponentStyle { 4 | FEED, 5 | DETAIL; 6 | 7 | fun fromString(style: String): AmityPostContentComponentStyle { 8 | return when (style) { 9 | "FEED" -> FEED 10 | "DETAIL" -> DETAIL 11 | else -> FEED 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /social-compose/src/test/java/com/amity/socialcloud/uikit/community/compose/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.compose 2 | 3 | import org.junit.Assert.assertEquals 4 | import org.junit.Test 5 | 6 | /** 7 | * Example local unit test, which will execute on the development machine (host). 8 | * 9 | * See [testing documentation](http://d.android.com/tools/testing). 10 | */ 11 | class ExampleUnitTest { 12 | @Test 13 | fun addition_isCorrect() { 14 | assertEquals(4, 2 + 2) 15 | } 16 | } -------------------------------------------------------------------------------- /common-compose/src/main/java/com/amity/socialcloud/uikit/common/utils/AmityClientExt.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.utils 2 | 3 | import com.amity.socialcloud.sdk.api.core.AmityCoreClient 4 | import com.amity.socialcloud.sdk.model.core.user.AmityUserType 5 | 6 | fun AmityCoreClient.isVisitor(): Boolean { 7 | return AmityCoreClient.getCurrentUserType() == AmityUserType.VISITOR 8 | } 9 | 10 | fun AmityCoreClient.isSignedIn(): Boolean { 11 | return AmityCoreClient.getCurrentUserType() == AmityUserType.SIGNED_IN 12 | } -------------------------------------------------------------------------------- /social-compose/src/main/res/drawable/amity_ic_play.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/adapter/AmityPostFooterViewHolder.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.adapter 2 | 3 | import android.view.View 4 | import androidx.recyclerview.widget.RecyclerView 5 | import com.amity.socialcloud.uikit.community.newsfeed.model.AmityBasePostFooterItem 6 | 7 | open class AmityPostFooterViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { 8 | 9 | open fun bind(data: AmityBasePostFooterItem, position: Int) { 10 | 11 | } 12 | 13 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/feed/settings/AmityPostRenderer.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.feed.settings 2 | 3 | import android.view.View 4 | import com.amity.socialcloud.uikit.community.newsfeed.adapter.AmityPostContentViewHolder 5 | 6 | interface AmityPostRenderer { 7 | 8 | fun getDataType(): String 9 | 10 | fun getLayoutId(): Int 11 | 12 | fun createViewHolder(view: View): AmityPostContentViewHolder 13 | 14 | fun enableHeader(): Boolean 15 | 16 | fun enableFooter(): Boolean 17 | 18 | } -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_bg_view_more_comments.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /social/src/main/res/layout/amity_fragment_comment_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 11 | 12 | -------------------------------------------------------------------------------- /social/src/main/res/menu/amity_community_home.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 12 | 13 | -------------------------------------------------------------------------------- /chat/src/main/res/drawable/amity_ic_image.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/model/AmityReactionType.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.model 2 | 3 | import androidx.annotation.DrawableRes 4 | import com.amity.socialcloud.uikit.common.R 5 | 6 | data class AmityReactionType( 7 | val name: String, 8 | @DrawableRes val icon: Int, 9 | ) { 10 | companion object { 11 | val UNKNOWN : AmityReactionType = AmityReactionType( 12 | name = "unknown", 13 | icon = R.drawable.amity_ic_reaction_like // Placeholder for unknown reaction icon 14 | ) 15 | } 16 | } -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_ic_photo.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/events/PostEngagementClickEvent.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.events 2 | 3 | import com.amity.socialcloud.sdk.model.social.post.AmityPost 4 | 5 | sealed class PostEngagementClickEvent { 6 | 7 | class Reaction(val post: AmityPost, val isAdding: Boolean) : PostEngagementClickEvent() 8 | 9 | class Comment(val post: AmityPost) : PostEngagementClickEvent() 10 | 11 | class Sharing(val post: AmityPost) : PostEngagementClickEvent() 12 | 13 | } -------------------------------------------------------------------------------- /logging/src/main/java/com/amity/socialcloud/uikit/logging/AmityExceptionHandler.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.logging 2 | 3 | class AmityExceptionHandler : Thread.UncaughtExceptionHandler { 4 | private var exceptionHandler: Thread.UncaughtExceptionHandler? = null 5 | 6 | init { 7 | exceptionHandler = Thread.getDefaultUncaughtExceptionHandler() 8 | } 9 | 10 | override fun uncaughtException(t: Thread, e: Throwable) { 11 | LogHelper.ex(e) 12 | exceptionHandler?.uncaughtException(t, e) 13 | } 14 | } -------------------------------------------------------------------------------- /social-compose/src/main/res/drawable/amity_ic_story_ad_chevron_top.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /social/src/main/res/layout/amity_item_settings_radio_content.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 12 | 13 | -------------------------------------------------------------------------------- /chat/src/main/java/com/amity/socialcloud/uikit/chat/messages/viewModel/AmityTextMessageViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.chat.messages.viewModel 2 | 3 | import androidx.databinding.ObservableField 4 | import com.amity.socialcloud.uikit.chat.R 5 | 6 | class AmityTextMessageViewModel : AmitySelectableMessageViewModel() { 7 | 8 | val text = ObservableField() 9 | val senderFillColor = ObservableField(R.color.amityColorPrimary) 10 | val receiverFillColor = ObservableField(R.color.amityMessageBubbleInverse) 11 | } -------------------------------------------------------------------------------- /social/src/main/res/menu/amity_feed_action_menu_owner.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 13 | 14 | -------------------------------------------------------------------------------- /common-compose/src/main/java/com/amity/socialcloud/uikit/common/utils/AmityIntentExt.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.utils 2 | 3 | import android.content.Intent 4 | import android.os.Build 5 | import com.amity.socialcloud.sdk.model.social.community.AmityCommunity 6 | 7 | fun Intent.getCommunity(key: String): AmityCommunity? { 8 | return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { 9 | extras?.getParcelable(key, AmityCommunity::class.java) 10 | } else { 11 | extras?.getParcelable(key) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /social/src/main/res/values/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 2 4 | 8 5 | 3 6 | 3 7 | 30 8 | 30 9 | 128 10 | 100 11 | -------------------------------------------------------------------------------- /amity-uikit/src/main/java/com/amity/socialcloud/uikit/AmityUIKitClient.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit 2 | 3 | import com.amity.socialcloud.sdk.api.core.AmityCoreClient 4 | import com.amity.socialcloud.sdk.model.core.shareablelink.AmityShareableLinkConfiguration 5 | import com.amity.socialcloud.uikit.social.AmitySocialUISettings 6 | import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers 7 | import io.reactivex.rxjava3.schedulers.Schedulers 8 | 9 | 10 | object AmityUIKitClient { 11 | 12 | val socialUISettings = AmitySocialUISettings 13 | 14 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/feed/settings/AmityPostShareClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.feed.settings 2 | 3 | import android.content.Context 4 | import com.amity.socialcloud.sdk.model.social.post.AmityPost 5 | 6 | interface AmityPostShareClickListener { 7 | 8 | fun shareToMyTimeline(context: Context, post: AmityPost) { 9 | 10 | } 11 | 12 | fun shareToGroup(context: Context, post: AmityPost) { 13 | 14 | } 15 | 16 | fun shareToExternal(context: Context, post: AmityPost) { 17 | 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /social-compose/src/main/java/com/amity/socialcloud/uikit/community/compose/community/setup/AmityCommunitySetupPageMode.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.compose.community.setup 2 | 3 | import android.os.Parcelable 4 | import com.amity.socialcloud.sdk.model.social.community.AmityCommunity 5 | import kotlinx.parcelize.Parcelize 6 | 7 | @Parcelize 8 | sealed class AmityCommunitySetupPageMode : Parcelable { 9 | object Create : AmityCommunitySetupPageMode() 10 | 11 | data class Edit(val community: AmityCommunity) : AmityCommunitySetupPageMode() 12 | } -------------------------------------------------------------------------------- /social/src/main/res/menu/amity_reply_action_menu_reply_owner.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /social-compose/src/main/java/com/amity/socialcloud/uikit/community/compose/target/AmityPostTargetSelectionPageType.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.compose.target 2 | 3 | enum class AmityPostTargetSelectionPageType(val key: String) { 4 | POST("post_generic"), 5 | POLL("post_poll"), 6 | CLIP("post_clip"), 7 | LIVESTREAM("post_live_stream"); 8 | 9 | companion object { 10 | fun enumOf(value: String?): AmityPostTargetSelectionPageType { 11 | return values().find { it.key == value } ?: POST 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /chat/src/main/res/drawable/amity_ic_default_avatar_direct_chat.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/utils/AmityNumberUtil.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.utils 2 | 3 | import java.math.RoundingMode 4 | import java.text.DecimalFormat 5 | 6 | object AmityNumberUtil { 7 | fun getNumberAbbreveation(number: Int): String { 8 | val format = DecimalFormat("#.#") 9 | format.roundingMode = RoundingMode.HALF_UP 10 | return when { 11 | number < 1000 -> number.toString() 12 | number < 1000000 -> "${format.format(number / 1000f)}K" 13 | else -> "${format.format(number / 1000000f)}M" 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/events/CommentEngagementClickEvent.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.events 2 | 3 | import com.amity.socialcloud.sdk.model.social.comment.AmityComment 4 | import com.amity.socialcloud.sdk.model.social.post.AmityPost 5 | 6 | sealed class CommentEngagementClickEvent { 7 | 8 | class Reaction(val comment: AmityComment, val isAdding: Boolean) : CommentEngagementClickEvent() 9 | 10 | class Reply(val comment: AmityComment, val post: AmityPost?) : CommentEngagementClickEvent() 11 | 12 | } -------------------------------------------------------------------------------- /social/src/main/res/layout/amity_fragment_reaction_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /social/src/main/res/menu/amity_commnet_action_menu_comment_owner.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /chat-compose/src/main/res/layout/amity_fragment_live_chat.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_ic_plus_button.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_arrow_down.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_rounded_corner_border_line_white.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 7 | 8 | 9 | 12 | 13 | 14 | 15 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_ic_filled_cross.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/view/AmityBasePostView.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.view 2 | 3 | import android.content.Context 4 | import android.util.AttributeSet 5 | import androidx.recyclerview.widget.RecyclerView 6 | 7 | class AmityBasePostView : RecyclerView { 8 | 9 | constructor(context: Context) : super(context) 10 | constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) 11 | constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) 12 | 13 | } 14 | -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_ic_filled_cross.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_ic_more_horizontal.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/viewholder/DeletedReplyCommentViewHolder.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.viewholder 2 | 3 | import androidx.recyclerview.widget.RecyclerView 4 | import com.amity.socialcloud.sdk.model.social.comment.AmityComment 5 | import com.amity.socialcloud.uikit.community.databinding.AmityItemDeletedReplyCommentBinding 6 | 7 | class DeletedReplyCommentViewHolder(binding: AmityItemDeletedReplyCommentBinding) : RecyclerView.ViewHolder(binding.root) { 8 | 9 | fun bind(comment: AmityComment) { 10 | 11 | 12 | } 13 | 14 | } -------------------------------------------------------------------------------- /common-compose/src/main/java/com/amity/socialcloud/uikit/common/reaction/AmityReactionListPageAction.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.reaction 2 | 3 | import com.amity.socialcloud.sdk.model.core.reaction.AmityReactionReferenceType 4 | 5 | sealed interface AmityReactionListPageAction { 6 | 7 | data class LoadData(val referenceType: AmityReactionReferenceType, 8 | val referenceId: String) : AmityReactionListPageAction 9 | 10 | data class GoToTab(val tabIndex: Int) : AmityReactionListPageAction 11 | data class RemoveReaction(val reactionName: String) : AmityReactionListPageAction 12 | } -------------------------------------------------------------------------------- /social/src/main/res/layout/amity_item_footer_view_post_file.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /social/src/main/res/layout/amity_item_post_attachment_option.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /chat/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'com.android.library' 3 | id 'org.jetbrains.kotlin.android' 4 | id 'kotlin-parcelize' 5 | id 'org.jetbrains.kotlin.kapt' 6 | } 7 | 8 | apply from: "../buildsystem/activity.gradle" 9 | 10 | android { 11 | namespace 'com.amity.socialcloud.uikit.chat' 12 | 13 | packagingOptions { 14 | pickFirst("META-INF/*.kotlin_module") 15 | exclude 'META-INF/INDEX.LIST' 16 | exclude 'META-INF/io.netty.versions.properties' 17 | } 18 | } 19 | 20 | dependencies { 21 | api project(path: ':common') 22 | api project(path: ':chat-compose') 23 | } 24 | -------------------------------------------------------------------------------- /common-compose/src/main/java/com/amity/socialcloud/uikit/common/ui/theme/Shape.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.ui.theme 2 | 3 | import androidx.compose.foundation.shape.RoundedCornerShape 4 | import androidx.compose.foundation.shape.ZeroCornerSize 5 | import androidx.compose.runtime.Immutable 6 | import androidx.compose.ui.graphics.Shape 7 | 8 | val AmityUIKitShapes = AmityShapes( 9 | component = RoundedCornerShape(ZeroCornerSize), 10 | surface = RoundedCornerShape(ZeroCornerSize) 11 | ) 12 | 13 | @Immutable 14 | data class AmityShapes( 15 | val component: Shape, 16 | val surface: Shape 17 | ) -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/utils/AmitySingleLiveData.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.utils 2 | 3 | import androidx.lifecycle.LifecycleOwner 4 | import androidx.lifecycle.MutableLiveData 5 | import androidx.lifecycle.Observer 6 | 7 | class AmitySingleLiveData : MutableLiveData() { 8 | 9 | override fun observe(owner: LifecycleOwner, observer: Observer) { 10 | super.observe(owner, Observer { t -> 11 | if (t != null) { 12 | observer.onChanged(t) 13 | postValue(null) 14 | } 15 | }) 16 | } 17 | } -------------------------------------------------------------------------------- /social-compose/src/main/res/drawable/amity_ic_alt_check.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /social-compose/src/main/res/drawable/amity_ic_post_target.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /social-compose/src/main/res/drawable/amity_ic_lock.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/model/AmityMessageReactions.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.model 2 | 3 | object AmityMessageReactions { 4 | private val reactions = mutableListOf() 5 | 6 | fun addReaction(reaction: AmityReactionType) { 7 | if (reactions.none { it.name == reaction.name }) { 8 | reactions.add(reaction) 9 | } 10 | } 11 | 12 | fun getList(): List { 13 | return reactions.toList() 14 | } 15 | 16 | fun toReaction(name: String): AmityReactionType? { 17 | return reactions.find { it.name == name } ?: reactions.firstOrNull() 18 | } 19 | } -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_ic_search.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_ic_unblock_user.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /common/src/main/res/layout/amity_view_radio_button.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /sample/src/main/res/layout/amity_sample_activity_chat_home.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /social-compose/src/main/res/drawable/amity_ic_category_not_selected.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/mycommunity/adapter/AmityBaseMyCommunityPreviewItemViewHolder.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.mycommunity.adapter 2 | 3 | import android.view.View 4 | import androidx.recyclerview.widget.RecyclerView 5 | import com.amity.socialcloud.sdk.model.social.community.AmityCommunity 6 | import com.amity.socialcloud.uikit.common.base.AmityBaseRecyclerViewPagingDataAdapter 7 | 8 | 9 | abstract class AmityBaseMyCommunityPreviewItemViewHolder( 10 | itemView: View 11 | ) : RecyclerView.ViewHolder(itemView), AmityBaseRecyclerViewPagingDataAdapter.Binder 12 | -------------------------------------------------------------------------------- /chat/src/main/res/layout/amity_fragment_directory.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 13 | 14 | -------------------------------------------------------------------------------- /social-compose/src/main/res/drawable/amity_ic_play_v4.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | 13 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_ic_chevron_right.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_ic_sponsor_badge.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /social-compose/src/main/res/drawable/amity_ic_category_selection_disabled.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/adapter/AmityPostCountViewHolder.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.adapter 2 | 3 | import android.view.View 4 | import androidx.recyclerview.widget.RecyclerView 5 | import com.amity.socialcloud.sdk.model.social.post.AmityPost 6 | import com.amity.socialcloud.uikit.common.base.AmityBaseRecyclerViewAdapter 7 | 8 | class AmityPostCountViewHolder constructor(itemView: View) : RecyclerView.ViewHolder(itemView), 9 | AmityBaseRecyclerViewAdapter.IBinder { 10 | 11 | override fun bind(data: AmityPost?, position: Int) { 12 | 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /social/src/main/res/layout/amity_activity_reaction_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | -------------------------------------------------------------------------------- /social/src/main/res/layout/amity_activity_user_profile.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/components/AmityStyleColorSpan.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.components 2 | 3 | import android.text.TextPaint 4 | import android.text.style.StyleSpan 5 | import androidx.annotation.ColorInt 6 | 7 | class AmityStyleColorSpan(@ColorInt private val color: Int, style: Int) : StyleSpan(style) { 8 | 9 | override fun updateDrawState(ds: TextPaint?) { 10 | super.updateDrawState(ds) 11 | ds?.color = color 12 | } 13 | 14 | override fun updateMeasureState(paint: TextPaint) { 15 | super.updateMeasureState(paint) 16 | paint.color = color 17 | } 18 | } -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/utils/AmityThemeUtil.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.utils 2 | 3 | import android.content.Context 4 | import com.amity.socialcloud.uikit.common.R 5 | 6 | object AmityThemeUtil { 7 | 8 | fun setCurrentTheme(context: Context) { 9 | val sharedPref = context.getSharedPreferences("AMITY_PREF", Context.MODE_PRIVATE) 10 | val currentTheme = sharedPref.getInt("THEME", 1) 11 | if (currentTheme == 1) { 12 | context.setTheme(R.style.AmityAppTheme1) 13 | } else { 14 | context.setTheme(R.style.AmityAppTheme2) 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /social-compose/src/main/res/drawable/amity_ic_community_edit.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_ic_content_expand.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_ic_create.xml: -------------------------------------------------------------------------------- 1 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /social/src/main/res/layout/amity_activity_edit_user_profile.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | -------------------------------------------------------------------------------- /social/src/main/res/layout/amity_activity_social_video_player.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /common-compose/src/main/java/com/amity/socialcloud/uikit/common/behavior/AmityBaseBehaviorContext.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.behavior 2 | 3 | import android.content.Intent 4 | import androidx.activity.result.ActivityResultLauncher 5 | 6 | open class AmityBaseBehaviorContext( 7 | private val baseContext: android.content.Context, 8 | private val baseLauncher: ActivityResultLauncher? = null, 9 | ) { 10 | fun launchActivity(intent: Intent) { 11 | if (baseLauncher == null) { 12 | baseContext.startActivity(intent) 13 | } else { 14 | baseLauncher.launch(intent) 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /common-compose/src/main/java/com/amity/socialcloud/uikit/common/ui/elements/AmityNewsFeedDivider.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.ui.elements 2 | 3 | import androidx.compose.material3.HorizontalDivider 4 | import androidx.compose.runtime.Composable 5 | import androidx.compose.ui.Modifier 6 | import androidx.compose.ui.unit.dp 7 | import com.amity.socialcloud.uikit.common.ui.theme.AmityTheme 8 | 9 | @Composable 10 | fun AmityNewsFeedDivider( 11 | modifier: Modifier = Modifier, 12 | ) { 13 | HorizontalDivider( 14 | modifier = modifier, 15 | thickness = 8.dp, 16 | color = AmityTheme.colors.newsfeedDivider, 17 | ) 18 | } -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/model/AmitySocialReactions.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.model 2 | 3 | object AmitySocialReactions { 4 | private val reactions = mutableListOf() 5 | 6 | fun addReaction(reaction: AmityReactionType) { 7 | if (reactions.none { it.name == reaction.name }) { 8 | reactions.add(reaction) 9 | } 10 | } 11 | 12 | fun getList(): List { 13 | return reactions.toList() 14 | } 15 | 16 | fun toReaction(name: String): AmityReactionType { 17 | return reactions.find { it.name == name } ?: reactions.firstOrNull() ?: AmityReactionType.UNKNOWN 18 | } 19 | } -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_ic_arrow.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /social/src/main/res/layout/amity_item_settings_header.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /chat/src/main/res/layout/amity_activity_chat.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /common/src/main/res/values-v27/shape.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | -------------------------------------------------------------------------------- /social/src/main/res/layout/amity_activity_community_member_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /social/src/main/res/layout/amity_item_base_post.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 13 | 14 | -------------------------------------------------------------------------------- /common-compose/src/main/java/com/amity/socialcloud/uikit/common/infra/initializer/AmityAppContext.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.infra.initializer 2 | 3 | import android.annotation.SuppressLint 4 | import android.content.Context 5 | 6 | 7 | @SuppressLint("StaticFieldLeak") 8 | object AmityAppContext { 9 | private var context: Context? = null 10 | 11 | fun init(context: Context) { 12 | if (this.context == null) { 13 | this.context = context.applicationContext 14 | } 15 | } 16 | 17 | fun getContext(): Context { 18 | return context ?: throw IllegalStateException("Context is not initialized") 19 | } 20 | } -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_ic_back.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_ic_post_creation.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_ic_push_comments.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /social/src/main/res/layout/amity_activity_category_community_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /social/src/main/res/layout/amity_activity_create_post_role_selection.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/base/AmityFragmentExtension.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.base 2 | 3 | import androidx.appcompat.app.AppCompatActivity 4 | import androidx.fragment.app.Fragment 5 | import androidx.lifecycle.ViewModel 6 | import androidx.lifecycle.ViewModelProvider 7 | import androidx.lifecycle.ViewModelStoreOwner 8 | 9 | fun Fragment.createViewModel(viewModelStoreOwner: ViewModelStoreOwner = (requireActivity() as AppCompatActivity).getFragmentViewModelStoreOwner(this), 10 | clazz: Class) : T { 11 | return ViewModelProvider(viewModelStoreOwner).get(clazz) 12 | } -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/common/views/list/AmityRecyclerView.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.common.views.list 2 | 3 | import android.content.Context 4 | import android.util.AttributeSet 5 | import androidx.recyclerview.widget.RecyclerView 6 | 7 | class AmityRecyclerView : RecyclerView { 8 | 9 | constructor(context: Context) : super(context) 10 | 11 | constructor(context: Context, attributeSet: AttributeSet?) : super(context, attributeSet) 12 | 13 | constructor(context: Context, attributeSet: AttributeSet?, defStyle: Int) : super( 14 | context, 15 | attributeSet, 16 | defStyle 17 | ) 18 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/model/AmityBasePostFooterItem.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.model 2 | 3 | import com.amity.socialcloud.sdk.model.social.post.AmityPost 4 | 5 | sealed class AmityBasePostFooterItem(val post: AmityPost) { 6 | 7 | class POST_ENGAGEMENT(post: AmityPost, 8 | val isReadOnly: Boolean) : AmityBasePostFooterItem(post) 9 | 10 | class COMMENT_PREVIEW(post: AmityPost, 11 | val isReadOnly: Boolean) : AmityBasePostFooterItem(post) 12 | 13 | class POST_REVIEW(post: AmityPost) : AmityBasePostFooterItem(post) 14 | 15 | } 16 | 17 | -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/model/AmityMediaGalleryTarget.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.model 2 | 3 | sealed class AmityMediaGalleryTarget(val id: String) { 4 | internal abstract fun getName(): String 5 | class USER(val userId: String) : AmityMediaGalleryTarget(userId) { 6 | override fun getName() = TARGET_USER 7 | } 8 | 9 | class COMMUNITY(val communityId: String) : AmityMediaGalleryTarget(communityId) { 10 | override fun getName() = TARGET_COMMUNITY 11 | } 12 | } 13 | 14 | 15 | internal const val TARGET_USER = "user" 16 | internal const val TARGET_COMMUNITY = "community" -------------------------------------------------------------------------------- /common/src/main/java/com/amity/socialcloud/uikit/common/utils/AmitySafeClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.utils 2 | 3 | import android.os.SystemClock 4 | import android.view.View 5 | 6 | class AmitySafeClickListener( 7 | private var defaultInterval: Int = 1000, 8 | private val onSafeCLick: (View) -> Unit 9 | ) : View.OnClickListener { 10 | private var lastTimeClicked: Long = 0 11 | override fun onClick(v: View) { 12 | if (SystemClock.elapsedRealtime() - lastTimeClicked < defaultInterval) { 13 | return 14 | } 15 | lastTimeClicked = SystemClock.elapsedRealtime() 16 | onSafeCLick(v) 17 | } 18 | } -------------------------------------------------------------------------------- /common/src/main/res/layout/amity_item_image_preview.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 12 | 13 | -------------------------------------------------------------------------------- /sample/src/main/res/layout/amity_activity_recent_message_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /social-compose/src/main/java/com/amity/socialcloud/uikit/community/compose/utils/ShareNativeAndroidSheet.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.compose.utils 2 | 3 | import android.content.Context 4 | import android.content.Intent 5 | 6 | fun sharePost(context: Context, postLink: String) { 7 | val shareIntent = Intent().apply { 8 | action = Intent.ACTION_SEND 9 | type = "text/plain" 10 | putExtra(Intent.EXTRA_TEXT, postLink) 11 | putExtra(Intent.EXTRA_SUBJECT, "Check out this post") 12 | } 13 | 14 | val chooserIntent = Intent.createChooser(shareIntent, "Share post via") 15 | context.startActivity(chooserIntent) 16 | } 17 | -------------------------------------------------------------------------------- /sample/src/main/res/layout/amity_activity_message_list_with_custom_ui.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /social-compose/src/main/res/drawable/amity_ic_story_comment_count.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /chat/src/main/java/com/amity/socialcloud/uikit/chat/util/MessageType.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.chat.util 2 | 3 | object MessageType { 4 | const val MESSAGE_ID_TEXT_SENDER = 1111 5 | const val MESSAGE_ID_TEXT_RECEIVER = 1112 6 | const val MESSAGE_ID_IMAGE_SENDER = 1113 7 | const val MESSAGE_ID_IMAGE_RECEIVER = 1114 8 | const val MESSAGE_ID_FILE_SENDER = 1115 9 | const val MESSAGE_ID_FILE_RECEIVER = 1116 10 | const val MESSAGE_ID_AUDIO_SENDER = 1117 11 | const val MESSAGE_ID_AUDIO_RECEIVER = 1118 12 | const val MESSAGE_ID_CUSTOM_SENDER = 1129 13 | const val MESSAGE_ID_CUSTOM_RECEIVER = 1130 14 | const val MESSAGE_ID_UNKNOWN = 2222 15 | } -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_ic_attachment.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_ic_circle.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityGlobalUserClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | import androidx.fragment.app.Fragment 4 | import com.amity.socialcloud.sdk.model.core.user.AmityUser 5 | import com.amity.socialcloud.uikit.community.profile.activity.AmityUserProfileActivity 6 | 7 | @Deprecated("Beta usage") 8 | interface AmityGlobalUserClickListener { 9 | fun onClickUser(fragment: Fragment, user: AmityUser) { 10 | val intent = AmityUserProfileActivity.newIntent(fragment.requireContext(), user.getUserId()) 11 | fragment.requireContext().startActivity(intent) 12 | } 13 | } -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_ic_error.xml: -------------------------------------------------------------------------------- 1 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_ic_more_horiz.xml: -------------------------------------------------------------------------------- 1 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /sample/src/main/res/drawable/amity_bottom_sheet_handler.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 13 | 14 | -------------------------------------------------------------------------------- /chat/src/main/java/com/amity/socialcloud/uikit/chat/directory/fragment/AmityDirectoryFragment.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.chat.directory.fragment 2 | 3 | import android.os.Bundle 4 | import android.view.LayoutInflater 5 | import android.view.View 6 | import android.view.ViewGroup 7 | import androidx.fragment.app.Fragment 8 | import com.amity.socialcloud.uikit.chat.R 9 | 10 | class AmityDirectoryFragment : Fragment() { 11 | 12 | override fun onCreateView( 13 | inflater: LayoutInflater, container: ViewGroup?, 14 | savedInstanceState: Bundle? 15 | ): View? { 16 | return inflater.inflate(R.layout.amity_fragment_directory, container, false) 17 | } 18 | 19 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/events/AmityFeedLoadStateEvent.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.events 2 | 3 | import com.amity.socialcloud.sdk.model.core.error.AmityError 4 | 5 | sealed class AmityFeedLoadStateEvent { 6 | 7 | class LOADED(private val itemCount: Int) : AmityFeedLoadStateEvent() { 8 | fun getItemCount(): Int { 9 | return itemCount 10 | } 11 | } 12 | 13 | class ERROR(private val error: AmityError) : AmityFeedLoadStateEvent() { 14 | fun getError(): AmityError { 15 | return error 16 | } 17 | } 18 | 19 | object LOADING : AmityFeedLoadStateEvent() 20 | } -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/newsfeed/listener/AmityUserClickListenerImpl.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.newsfeed.listener 2 | 3 | import androidx.fragment.app.Fragment 4 | import com.amity.socialcloud.sdk.model.core.user.AmityUser 5 | import com.amity.socialcloud.uikit.community.profile.activity.AmityUserProfileActivity 6 | 7 | class AmityUserClickListenerImpl(private val fragment: Fragment) : AmityUserClickListener { 8 | 9 | override fun onClickUser(user: AmityUser) { 10 | val intent = AmityUserProfileActivity.newIntent(fragment.requireContext(), user.getUserId()) 11 | fragment.requireContext().startActivity(intent) 12 | } 13 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Amity-Social-Cloud-UIKit-Android 2 | Our UI Kits include user interfaces to enable fast integration of standard 3 | Amity Chat and Amity Social features into new or existing applications. 4 | 5 | Screen Shot 2564-11-22 at 08 29 57 6 | Screen Shot 2564-11-22 at 08 30 03 7 | Screen Shot 2564-11-22 at 08 30 19 8 | 9 | -------------------------------------------------------------------------------- /common-compose/src/main/java/com/amity/socialcloud/uikit/common/utils/AmityPostExt.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.utils 2 | 3 | import com.amity.socialcloud.sdk.model.social.post.AmityPost 4 | 5 | fun AmityPost.isSupportedDataTypes(): Boolean { 6 | return getChildren().isEmpty() || getChildren().any { child -> 7 | val data = child.getData() 8 | return data is AmityPost.Data.TEXT 9 | || data is AmityPost.Data.IMAGE 10 | || data is AmityPost.Data.VIDEO 11 | || data is AmityPost.Data.CLIP 12 | || data is AmityPost.Data.LIVE_STREAM 13 | || data is AmityPost.Data.POLL 14 | } 15 | } 16 | 17 | -------------------------------------------------------------------------------- /sample/src/main/res/layout/amity_activity_live_chat_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 10 | 11 | 15 | 16 | -------------------------------------------------------------------------------- /chat/src/main/res/drawable/amity_ic_image_failed.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /social/src/main/res/drawable/amity_ic_ban.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /social/src/main/res/layout/amity_fragment_community_member_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /social/src/main/res/menu/amity_feed_action_menu_admin.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 13 | 14 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /social/src/main/res/menu/amity_reply_action_menu_admin.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 13 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /chat/src/main/java/com/amity/socialcloud/uikit/chat/home/groupchat/AmityCreateGroupChatFragment.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.chat.home.groupchat 2 | 3 | import android.os.Bundle 4 | import android.view.LayoutInflater 5 | import android.view.View 6 | import android.view.ViewGroup 7 | import androidx.fragment.app.Fragment 8 | import com.amity.socialcloud.uikit.chat.R 9 | 10 | 11 | class AmityCreateGroupChatFragment : Fragment() { 12 | 13 | override fun onCreateView( 14 | inflater: LayoutInflater, container: ViewGroup?, 15 | savedInstanceState: Bundle? 16 | ): View? { 17 | return inflater.inflate(R.layout.amity_fragment_create_group_chat, container, false) 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_ic_story_flash.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /sample/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | @color/upstraColorPrimary 4 | @color/upstraColorSecondary 5 | @color/upstraColorAlert 6 | @color/upstraColorHighlight 7 | @color/upstraColorBase 8 | @color/upstraColorBaseInverse 9 | @color/upstraMessageBubble 10 | @color/upstraMessageBubbleInverse 11 | 12 | -------------------------------------------------------------------------------- /social/src/main/java/com/amity/socialcloud/uikit/community/notificationsettings/pushDetail/AmityPostMenuCreator.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.community.notificationsettings.pushDetail 2 | 3 | import com.amity.socialcloud.uikit.community.setting.AmitySettingsItem 4 | 5 | interface AmityPostMenuCreator { 6 | fun createReactPostMenu(communityId: String): AmitySettingsItem.TextContent 7 | fun createReactPostRadioMenu(communityId: String, choices: List>): AmitySettingsItem.RadioContent 8 | fun createNewPostMenu(communityId: String): AmitySettingsItem.TextContent 9 | fun createNewPostRadioMenu(communityId: String, choices: List>): AmitySettingsItem.RadioContent 10 | } -------------------------------------------------------------------------------- /social/src/main/res/menu/amity_upload_profile_picture.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 13 | 14 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /common-compose/src/main/java/com/amity/socialcloud/uikit/common/reaction/AmityReactionListPageState.kt: -------------------------------------------------------------------------------- 1 | package com.amity.socialcloud.uikit.common.reaction 2 | 3 | import androidx.paging.PagingData 4 | import com.amity.socialcloud.sdk.model.core.reaction.AmityReaction 5 | import com.amity.socialcloud.sdk.model.core.reaction.AmityReactionReferenceType 6 | import kotlinx.coroutines.flow.Flow 7 | import kotlinx.coroutines.flow.emptyFlow 8 | 9 | data class AmityReactionListPageState ( 10 | val referenceType : AmityReactionReferenceType = AmityReactionReferenceType.MESSAGE, 11 | val referenceId : String = "", 12 | val tabItems : List = listOf(ReactionTab("All", 0)), 13 | val currentIndex : Int = 0, 14 | ) -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_ic_add_black.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /common/src/main/res/drawable/amity_ic_location.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /common/src/main/res/layout/amity_view_media_gallery_tab.xml: -------------------------------------------------------------------------------- 1 | 2 | 15 | 16 | -------------------------------------------------------------------------------- /social/src/main/res/menu/amity_commnet_action_menu_admin.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 13 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /amity-sample-code/src/main/java/com/amity/snipet/verifier/social/user/blocked/AmityBlockedUsersPageSample.kt: -------------------------------------------------------------------------------- 1 | package com.amity.snipet.verifier.social.user.blocked 2 | 3 | import androidx.compose.runtime.Composable 4 | import com.amity.socialcloud.uikit.community.compose.user.blocked.AmityBlockedUsersPage 5 | 6 | class AmityBlockedUsersPageSample { 7 | /* begin_sample_code 8 | gist_id: b6eab4bb39ea962fb5b997833f0bc890 9 | filename: AmityBlockedUsersPageSample.kt 10 | asc_page: https://docs.amity.co/amity-uikit/uikit-v4-beta/ 11 | description: Blocked Users Page sample 12 | */ 13 | @Composable 14 | fun composePage() { 15 | AmityBlockedUsersPage() 16 | } 17 | /* end_sample_code */ 18 | } -------------------------------------------------------------------------------- /amity-sample-code/src/main/java/com/amity/snipet/verifier/social/user/edit/AmityEditUserProfilePageSample.kt: -------------------------------------------------------------------------------- 1 | package com.amity.snipet.verifier.social.user.edit 2 | 3 | import androidx.compose.runtime.Composable 4 | import com.amity.socialcloud.uikit.community.compose.user.edit.AmityEditUserProfilePage 5 | 6 | class AmityEditUserProfilePageSample { 7 | /* begin_sample_code 8 | gist_id: bae34848ea10320f9a4eb52d8e489702 9 | filename: AmityEditUserProfilePageSample.kt 10 | asc_page: https://docs.amity.co/amity-uikit/uikit-v4-beta/ 11 | description: Edit User Page sample 12 | */ 13 | @Composable 14 | fun composePage() { 15 | AmityEditUserProfilePage() 16 | } 17 | /* end_sample_code */ 18 | } --------------------------------------------------------------------------------