blob: 05fd694a0498b596c3542c742364652901027557 [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.
import {getRequiredElement} from 'chrome://resources/js/util.js';
import {DataSharingInternalsBrowserProxy} from './data_sharing_internals_browser_proxy.js';
import type {GroupData, GroupMember} from './group_data.mojom-webui.js';
import {MemberRole} from './group_data.mojom-webui.js';
function getProxy(): DataSharingInternalsBrowserProxy {
return DataSharingInternalsBrowserProxy.getInstance();
}
function appendTextChildToList(textToShow: string, element: HTMLUListElement) {
const textElement = document.createElement('li');
textElement.textContent = textToShow;
element.appendChild(textElement);
}
function roleTypeToString(role: MemberRole): string {
switch (role) {
case MemberRole.kUnspecified:
return 'Unknown';
case MemberRole.kOwner:
return 'Owner';
case MemberRole.kMember:
return 'Member';
case MemberRole.kInvitee:
return 'Invitee';
}
}
function addMemberToGroup(member: GroupMember, group: HTMLUListElement) {
const memberlistItem = document.createElement('li');
const memberItem = document.createElement('ul');
appendTextChildToList(member.displayName, memberItem);
appendTextChildToList(member.email, memberItem);
appendTextChildToList(roleTypeToString(member.role), memberItem);
appendTextChildToList(member.avatarUrl.url, memberItem);
memberlistItem.appendChild(memberItem);
group.appendChild(memberlistItem);
}
/**
* Show all groups information.
*/
function displayGroups(isSuccess: boolean, groupData: GroupData[]) {
getRequiredElement('get-all-groups-status').textContent =
isSuccess ? 'success' : 'failed';
const groupList = getRequiredElement('group-list');
groupData.forEach((group) => {
const listItem = document.createElement('li');
const groupItem = document.createElement('ul');
appendTextChildToList(group.groupId, groupItem);
appendTextChildToList(group.displayName, groupItem);
group.members.forEach((member) => {
addMemberToGroup(member, groupItem);
});
listItem.appendChild(groupItem);
groupList.appendChild(listItem);
});
}
function initialize() {
getProxy().getAllGroups().then(
response => displayGroups(response.isSuccess, response.data));
}
document.addEventListener('DOMContentLoaded', initialize);