Post_ButtomSection_Layout.xml
ShareBottomDialogFragment.cs
public class ShareBottomDialogFragment : BottomSheetDialogFragment, MaterialDialog.IListCallback, MaterialDialog.ISingleButtonCallback
{
private LinearLayout ShareTimelineLayout, ShareGroupLayout, ShareOptionsLayout, SharePageLayout;
private PostDataObject DataPost;
private PostModelType TypePost;
private string TypeDialog;
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
try
{
Context contextThemeWrapper = AppSettings.SetTabDarkTheme ? new ContextThemeWrapper(Activity, Resource.Style.MyTheme_Dark_Base) : new ContextThemeWrapper(Activity, Resource.Style.MyTheme_Base);
LayoutInflater localInflater = inflater.CloneInContext(contextThemeWrapper);
View view = localInflater?.Inflate(Resource.Layout.NativeShareBottomDialog, container, false);
return view;
}
catch (Exception exception)
{
Methods.DisplayReportResultTrack(exception);
return null!;
}
}
public override void OnViewCreated(View view, Bundle savedInstanceState)
{
try
{
base.OnViewCreated(view, savedInstanceState);
DataPost = JsonConvert.DeserializeObject(Arguments?.GetString("ItemData") ?? "");
TypePost = JsonConvert.DeserializeObject(Arguments?.GetString("TypePost") ?? "");
InitComponent(view);
AddOrRemoveEvent(true);
}
catch (Exception exception)
{
Methods.DisplayReportResultTrack(exception);
}
}
public override void OnLowMemory()
{
try
{
GC.Collect(GC.MaxGeneration);
base.OnLowMemory();
}
catch (Exception exception)
{
Methods.DisplayReportResultTrack(exception);
}
}
private void InitComponent(View view)
{
try
{
ShareTimelineLayout = view.FindViewById(Resource.Id.ShareTimelineLayout);
ShareGroupLayout = view.FindViewById(Resource.Id.ShareGroupLayout);
ShareOptionsLayout = view.FindViewById(Resource.Id.ShareOptionsLayout);
SharePageLayout = view.FindViewById(Resource.Id.SharePageLayout);
}
catch (Exception e)
{
Methods.DisplayReportResultTrack(e);
}
}
private void AddOrRemoveEvent(bool addEvent)
{
try
{
switch (addEvent)
{
case true:
ShareTimelineLayout.Click += ShareTimelineLayoutOnClick;
ShareGroupLayout.Click += ShareGroupLayoutOnClick;
ShareOptionsLayout.Click += ShareOptionsLayoutOnClick;
SharePageLayout.Click += SharePageLayoutOnClick;
break;
default:
ShareTimelineLayout.Click -= ShareTimelineLayoutOnClick;
ShareGroupLayout.Click -= ShareGroupLayoutOnClick;
ShareOptionsLayout.Click -= ShareOptionsLayoutOnClick;
SharePageLayout.Click -= SharePageLayoutOnClick;
break;
}
}
catch (Exception e)
{
Methods.DisplayReportResultTrack(e);
}
}
private async void ShareOptionsLayoutOnClick(object sender, EventArgs e)
{
try
{
switch (CrossShare.IsSupported)
{
case false:
return;
}
ShareFileImplementation.Activity = Activity;
switch (TypePost)
{
case PostModelType.EventPost:
{
if (DataPost.Event?.EventClass != null)
await CrossShare.Current.Share(new ShareMessage
{
Title = Methods.FunString.DecodeString(DataPost.Event.Value.EventClass.Name),
Text = Methods.FunString.DecodeString(DataPost.Event.Value.EventClass.Description),
Url = DataPost.Event.Value.EventClass.Url,
});
break;
}
case PostModelType.ImagePost:
case PostModelType.StickerPost:
case PostModelType.MapPost:
case PostModelType.MultiImage2:
case PostModelType.MultiImage3:
case PostModelType.MultiImage4:
{
var imagesList = DataPost.PhotoMulti ?? DataPost.PhotoAlbum;
string urlImage = imagesList?.Count > 0 ? imagesList[0].Image : !string.IsNullOrEmpty(DataPost.PostSticker) ? DataPost.PostSticker : DataPost.PostFileFull;
var fileName = urlImage?.Split('/').Last();
switch (AppSettings.AllowDownloadMedia)
{
case true:
await ShareFileImplementation.ShareRemoteFile(urlImage, fileName, Context.GetText(Resource.String.Lbl_Send_to));
break;
default:
await CrossShare.Current.Share(new ShareMessage
{
Title = "",
Text = urlImage,
Url = DataPost.Url
});
break;
}
break;
}
case PostModelType.LinkPost:
{
var linkUrl = DataPost.PostLink?.Replace("https://", "").Replace("http://", "").Split('/').FirstOrDefault();
ShareFileImplementation.ShareText(linkUrl, Context.GetText(Resource.String.Lbl_Send_to));
break;
}
case PostModelType.YoutubePost:
{
var linkUrl = DataPost.PostYoutube;
ShareFileImplementation.ShareText(linkUrl, Context.GetText(Resource.String.Lbl_Send_to));
break;
}
case PostModelType.VideoPost:
{
var linkUrl = DataPost.PostFileFull;
var fileName = linkUrl?.Split('/').Last();
switch (AppSettings.AllowDownloadMedia)
{
case true:
await ShareFileImplementation.ShareRemoteFile(linkUrl, fileName, Context.GetText(Resource.String.Lbl_Send_to));
break;
default:
await CrossShare.Current.Share(new ShareMessage
{
Title = "",
Text = linkUrl,
Url = DataPost.Url
});
break;
}
break;
}
case PostModelType.FilePost:
{
var linkUrl = DataPost.PostFileFull;
var fileName = linkUrl?.Split('/').Last();
switch (AppSettings.AllowDownloadMedia)
{
case true:
await ShareFileImplementation.ShareRemoteFile(linkUrl, fileName, Context.GetText(Resource.String.Lbl_Send_to));
break;
default:
await CrossShare.Current.Share(new ShareMessage
{
Title = "",
Text = linkUrl,
Url = DataPost.Url
});
break;
}
break;
}
case PostModelType.ProductPost:
{
if (DataPost.Product != null)
await CrossShare.Current.Share(new ShareMessage
{
Title = Methods.FunString.DecodeString(DataPost.Product.Value.ProductClass.Name),
Text = Methods.FunString.DecodeString(DataPost.Product.Value.ProductClass.Description),
Url = DataPost.Product.Value.ProductClass.Url,
});
break;
}
case PostModelType.BlogPost:
if (DataPost.Blog != null)
{
await CrossShare.Current.Share(new ShareMessage
{
Title = Methods.FunString.DecodeString(DataPost.Blog.Title),
Text = Methods.FunString.DecodeString(DataPost.Blog.Description),
Url = DataPost.Blog.Url,
});
}
break;
default:
{
if (DataPost.Blog != null)
{
await CrossShare.Current.Share(new ShareMessage
{
Title = Methods.FunString.DecodeString(DataPost.Blog.Title),
Text = Methods.FunString.DecodeString(DataPost.Blog.Description),
Url = DataPost.Blog.Url,
});
}
else switch (string.IsNullOrEmpty(DataPost.PostSticker))
{
case false:
{
var linkUrl = DataPost.PostSticker;
var fileName = linkUrl?.Split('/').Last();
switch (AppSettings.AllowDownloadMedia)
{
case true:
await ShareFileImplementation.ShareRemoteFile(linkUrl, fileName, Context.GetText(Resource.String.Lbl_Send_to));
break;
default:
await CrossShare.Current.Share(new ShareMessage
{
Title = "",
Text = linkUrl,
Url = DataPost.Url
});
break;
}
break;
}
default:
{
switch (string.IsNullOrEmpty(DataPost.PostFileFull))
{
case false:
{
var linkUrl = DataPost.PostFileFull;
var fileName = linkUrl?.Split('/').Last();
var type = Methods.AttachmentFiles.Check_FileExtension(linkUrl);
switch (type)
{
case "Image":
case "File":
await ShareFileImplementation.ShareRemoteFile(linkUrl, fileName, Context.GetText(Resource.String.Lbl_Send_to));
break;
default:
ShareFileImplementation.ShareText(linkUrl, Context.GetText(Resource.String.Lbl_Send_to));
break;
}
break;
}
default:
await CrossShare.Current.Share(new ShareMessage
{
Title = "",
Text = Methods.FunString.DecodeString(DataPost.PostText),
Url = DataPost.Url
});
break;
}
break;
}
}
break;
}
}
Dismiss();
}
catch (Exception exception)
{
Methods.DisplayReportResultTrack(exception);
}
}