blob: af0eea7d7f6fcf1580c79ecec612139f5761ceea [file] [log] [blame]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// <if expr="_google_chrome">
import '/data_sharing_sdk.js';
// </if>
// <if expr="not _google_chrome">
import './dummy_data_sharing_sdk.js';
// </if>
import type {DataSharingMemberRole, DataSharingSdkGroupData, DataSharingSdkGroupMember} from './data_sharing_sdk_types.js';
import type {GroupData, GroupMember} from './group_data.mojom-webui.js';
import {MemberRole} from './group_data.mojom-webui.js';
// Utilities to convert DataSharingSdkGroup in data sharing sdk to GroupData in
// group_data.mojom
export function toMojomGroupData(group: DataSharingSdkGroupData): GroupData {
const members: GroupMember[] = [];
for (const member of group.members) {
members.push(toMojomGroupMember(member));
}
const formerMembers: GroupMember[] = [];
// TODO(crbug.com/396486431): convert formerMember from
// DataSharingSdkGroupData to GroupData when a new sdk version is updated.
return {
groupId: group.groupId,
displayName: group.displayName || '',
accessToken: group.accessToken || '',
members,
formerMembers,
};
}
function toMojomGroupMember(member: DataSharingSdkGroupMember): GroupMember {
return {
gaiaId: member.focusObfuscatedGaiaId,
displayName: member.displayName,
email: member.email,
role: toMojomRole(member.role),
avatarUrl: {url: member.avatarUrl},
// Bandage for crbug.com/372249284, clean this up after the root cause is
// addressed.
givenName: member.givenName || '',
};
}
function toMojomRole(role: DataSharingMemberRole): MemberRole {
// Applicant will eventually be added, it's supported by the Data Sharing SDK.
switch (role) {
case 'invitee':
return MemberRole.kInvitee;
case 'member':
return MemberRole.kMember;
case 'owner':
return MemberRole.kOwner;
default:
return MemberRole.kUnspecified;
}
}