Feat (user): add empty state when no contacts are availble to add.

Fix (user): added waring for admin when adding new members to group.
This commit is contained in:
sairaj mote 2021-01-28 19:37:34 +05:30
parent e59347030e
commit 0f1b733d80
4 changed files with 74 additions and 26 deletions

View File

@ -202,6 +202,11 @@ a:any-link {
font-weight: normal;
}
.warning {
background: wheat;
color: #111;
}
.icon {
fill: none;
stroke-width: 6;
@ -590,6 +595,7 @@ sm-button.danger {
padding: 0.8rem 1.5rem;
align-items: center;
flex-shrink: 0;
user-select: none;
overflow: hidden;
}
.contact:not(.chat) {
@ -603,6 +609,9 @@ sm-button.danger {
.contact.admin {
grid-template-columns: auto 1fr auto;
}
.contact.selected {
background-color: rgba(var(--text-color), 0.06);
}
.contact .initial {
grid-area: dp;
}
@ -1291,9 +1300,12 @@ sm-button.danger {
}
}
#chat_header {
padding: 1rem;
padding: 0 1rem;
min-height: 4rem;
grid-template-columns: auto 1fr auto;
grid-template-columns: 1fr;
}
#chat_header .flex {
height: 100%;
}
#chat_header .back-button {
height: 2rem;
@ -1478,11 +1490,11 @@ sm-button.danger {
overflow-y: auto;
}
#chat_container:empty {
.observe-empty-state:empty {
display: none;
}
#chat_container:not(:empty) ~ .empty-state {
.observe-empty-state:not(:empty) ~ .empty-state {
display: none;
}
@ -1493,6 +1505,12 @@ sm-button.danger {
#contacts_popup::part(popup-body) {
padding: 0;
}
#contacts_popup .popup-header {
padding: 1.5rem;
}
#contacts_popup .warning {
padding: 0.5rem 1.5rem;
}
sm-tab-panels {
overflow: hidden auto;
@ -1668,6 +1686,10 @@ sm-panel {
max-width: 90%;
}
#chat_header {
grid-template-columns: auto 1fr;
}
#settings_page {
overflow-x: hidden;
}

2
css/main.min.css vendored

File diff suppressed because one or more lines are too long

View File

@ -168,6 +168,10 @@ a:any-link{
.normal-weight{
font-weight: normal;
}
.warning{
background: wheat;
color: #111;
}
.icon{
fill: none;
stroke-width: 6;
@ -537,6 +541,7 @@ sm-button.danger{
padding: 0.8rem 1.5rem;
align-items: center;
flex-shrink: 0;
user-select: none;
overflow: hidden;
&:not(.chat){
grid-template-columns: auto 1fr;
@ -551,6 +556,9 @@ sm-button.danger{
&.admin{
grid-template-columns: auto 1fr auto;
}
&.selected{
background-color: rgba(var(--text-color), 0.06);
}
.initial{
grid-area: dp;
}
@ -1223,9 +1231,12 @@ sm-button.danger{
}
}
#chat_header{
padding: 1rem;
padding: 0 1rem;
min-height: 4rem;
grid-template-columns: auto 1fr auto;
grid-template-columns: 1fr;
.flex{
height: 100%;
}
.back-button{
height: 2rem;
width: 2rem;
@ -1403,17 +1414,25 @@ sm-button.danger{
height: 100%;
overflow-y: auto;
}
#chat_container:empty{
.observe-empty-state:empty{
display: none;
}
#chat_container:not(:empty) ~ .empty-state{
.observe-empty-state:not(:empty) ~ .empty-state{
display: none;
}
#chat_container{
padding-bottom: 6rem;
}
#contacts_popup::part(popup-body){
padding: 0;
#contacts_popup{
&::part(popup-body){
padding: 0;
}
.popup-header{
padding: 1.5rem;
}
.warning{
padding: 0.5rem 1.5rem;
}
}
sm-tab-panels{
overflow: hidden auto;
@ -1580,6 +1599,9 @@ sm-panel{
max-width: 90%;
}
}
#chat_header{
grid-template-columns: auto 1fr;
}
#settings_page{
overflow-x: hidden;
#settings_panel header{

View File

@ -254,7 +254,11 @@
<h4>Select contact to add</h4>
<sm-button id="add_members_button" variant="primary" disabled>Add</sm-button>
</header>
<div id="popup_contacts_container"></div>
<p class="warning">*Contacts that haven't yet replied to you, can't be added to a group. So they won't be visible here.</p>
<div id="popup_contacts_container" class="observe-empty-state"></div>
<div class="empty-state">
<p>You don't have any other contacts to show.</p>
</div>
</sm-popup>
<!-- Templates -->
@ -383,7 +387,7 @@
</svg>
New chat
</sm-button>
<div id="chat_container" class="flex"></div>
<div id="chat_container" class="flex observe-empty-state"></div>
<div id="new_conversation" class="flex direction-column empty-state">
<svg class="icon new-conversation align-center" viewBox="0 0 512 512">
<title>new conversation</title>
@ -506,7 +510,7 @@
<div id="group_members_card" class="card hide-completely">
<div class="flex align-center">
<h4 class="h4">Group members</h4>
<sm-button id="edit_group_button" class="admin-option round small justify-right" onclick="editGroupMembers()">Edit</sm-button>
<sm-button id="edit_group_button" class="admin-option hide-completely round small justify-right" onclick="editGroupMembers()">Edit</sm-button>
</div>
<p id="remove_members_tip" class="tip hide-completely">Select members to remove or add new members</p>
<div id="member_options" class="flex hide-completely">
@ -516,8 +520,8 @@
<div id="group_members_list"></div>
</div>
<div class="card">
<sm-button>Clear chat</sm-button>
<sm-button>Delete chat</sm-button>
<sm-button class="danger">Clear chat</sm-button>
<sm-button class="danger">Delete chat</sm-button>
</div>
</div>
</div>
@ -679,9 +683,9 @@
//Checks for internet connection status
if (!navigator.onLine)
notify('There seems to be a problem connecting to the internet.', 'error', '', true)
notify('There seems to be a problem connecting to the internet, Please check you internet connection.', 'error', '', true)
window.addEventListener('offline', () => {
notify('There seems to be a problem connecting to the internet.', 'error', true, true)
notify('There seems to be a problem connecting to the internet, Please check you internet connection.', 'error', true, true)
})
window.addEventListener('online', () => {
getRef('notification_drawer').clearAll()
@ -807,7 +811,7 @@
case 'contacts_popup':
const contacts = []
for(contact in floGlobals.contacts){
if(!floGlobals.groups[activeChat.floID].members.includes(contact)){
if(!floGlobals.groups[activeChat.floID].members.includes(contact) && contact in floGlobals.pubKeys){
contacts.push(contact)
}
}
@ -818,7 +822,6 @@
getRef('popup_contacts_container').querySelectorAll('.contact').forEach(cont => {
cont.classList.add('selectable')
})
isAddingMember = true
isRemovingMember = false
break
}
@ -834,7 +837,6 @@
break;
case 'contacts_popup':
getRef('popup_contacts_container').innerHTML = ''
isAddingMember = false
isRemovingMember = true
membersToAdd.clear()
break;
@ -2856,10 +2858,12 @@
if(floGlobals.groups[activeChat['floID']].admin === myFloID){
getRef("chat_name").disabled = false
getRef('group_description').disabled = false
getRef('edit_group_button').classList.remove('hide-completely')
}
else{
getRef("chat_name").disabled = true
getRef('group_description').disabled = true
getRef('edit_group_button').classList.add('hide-completely')
}
}
else{
@ -2916,7 +2920,6 @@
let isGroupEditable = false
let isRemovingMember = false
let isAddingMember = false
function editGroupMembers(){
if(!isChatDetailsOpen && !isGroupEditable) return
if(isGroupEditable){
@ -2935,7 +2938,6 @@
getRef('remove_members_tip').classList.add('hide-completely')
getRef('member_options').classList.add('hide-completely')
isGroupEditable = false
isAddingMember = false
isRemovingMember = false
}
else{
@ -2953,7 +2955,6 @@
getRef('remove_members_button').classList.add('hide-completely')
getRef('init_add_members_button').classList.remove('hide-completely')
isGroupEditable = true
isAddingMember = false
isRemovingMember = true
}
}
@ -3001,6 +3002,7 @@
}
function addTick(contact){
contact.classList.add('selected')
const initial = contact.querySelector('.initial')
const tick = document.createElement('div');
tick.innerHTML = `
@ -3022,7 +3024,8 @@
}
)
}
function removeTick(contact, options){
function removeTick(contact){
contact.classList.remove('selected')
const tick = contact.querySelector('.tick')
tick.animate([
{transform: 'scale(1)'},
@ -3054,9 +3057,10 @@
function removeGroupMembers(){
messenger.rmGroupMembers(activeChat.floID, [...membersToRemove])
.then(res => {
getRef('group_members_list').querySelectorAll('.contact .tick').forEach(contact => {
getRef('group_members_list').querySelectorAll('.selected').forEach(contact => {
contact.remove()
})
editGroupMembers()
})
.catch(err => console.log(err))
}