Added calendar meeting URLs

This commit is contained in:
M66B 2023-10-29 12:35:59 +01:00
parent 8c50e11869
commit b06dd3894a
2 changed files with 25 additions and 12 deletions

View File

@ -188,7 +188,6 @@ import javax.mail.Session;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import biweekly.Biweekly;
import biweekly.ICalVersion;
import biweekly.ICalendar;
import biweekly.component.VEvent;
@ -350,8 +349,6 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
private static final int MAX_RECIPIENTS_COMPACT = 3;
private static final int MAX_RECIPIENTS_NORMAL = 7;
private static final String X_ONLINE_MEETING = "X-MICROSOFT-ONLINEMEETINGEXTERNALLINK";
public class ViewHolder extends RecyclerView.ViewHolder implements
View.OnClickListener,
View.OnLongClickListener,
@ -3765,11 +3762,9 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
Organizer organizer = event.getOrganizer();
RawProperty prop = event.getExperimentalProperty(X_ONLINE_MEETING);
String uri = (prop == null ? null : prop.getValue());
Uri uri = CalendarHelper.getOnlineMeetingUrl(context, event);
ibCalendar.setVisibility(View.VISIBLE);
ibOnline.setVisibility(TextUtils.isEmpty(uri) ? View.GONE : View.VISIBLE);
ibOnline.setVisibility(uri == null ? View.GONE : View.VISIBLE);
tvCalendarSummary.setText(summary);
tvCalendarSummary.setVisibility(TextUtils.isEmpty(summary) ? View.GONE : View.VISIBLE);
@ -3966,11 +3961,8 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
return intent;
}
if (action == R.id.ibOnline) {
RawProperty prop = event.getExperimentalProperty(X_ONLINE_MEETING);
String uri = (prop == null ? null : prop.getValue());
return (uri == null ? null : Uri.parse(uri));
}
if (action == R.id.ibOnline)
return CalendarHelper.getOnlineMeetingUrl(context, event);
Created created = event.getCreated();
LastModified modified = event.getLastModified();

View File

@ -55,6 +55,7 @@ import biweekly.parameter.ParticipationStatus;
import biweekly.property.Action;
import biweekly.property.Attendee;
import biweekly.property.ICalProperty;
import biweekly.property.RawProperty;
import biweekly.property.RecurrenceRule;
import biweekly.property.Trigger;
import biweekly.util.Duration;
@ -106,6 +107,26 @@ public class CalendarHelper {
return tzid;
}
static Uri getOnlineMeetingUrl(Context context, VEvent event) {
try {
RawProperty prop = event.getExperimentalProperty("X-GOOGLE-CONFERENCE");
if (prop == null)
prop = event.getExperimentalProperty("X-MICROSOFT-ONLINEMEETINGEXTERNALLINK");
if (prop == null)
prop = event.getExperimentalProperty("X-MICROSOFT-SKYPETEAMSMEETINGURL");
if (prop == null)
return null;
String url = prop.getValue();
if (TextUtils.isEmpty(url))
return null;
Uri uri = Uri.parse(url);
return (uri.isHierarchical() ? uri : null);
} catch (Throwable ex) {
Log.e(ex);
return null;
}
}
static Long exists(Context context, String selectedAccount, String selectedName, String uid) {
ContentResolver resolver = context.getContentResolver();
try (Cursor cursor = resolver.query(CalendarContract.Events.CONTENT_URI,