Added unblocking.

Added styling.

Trigger changes on both conversation and messages when we block/unblock.
pull/47/head
Mikunj 7 years ago
parent 658b2b0332
commit ba390e354b

@ -1,4 +1,4 @@
/* global , Whisper, storage */ /* global , Whisper, storage, ConversationController */
/* global textsecure: false */ /* global textsecure: false */
/* eslint-disable more/no-then */ /* eslint-disable more/no-then */
@ -6,12 +6,12 @@
// eslint-disable-next-line func-names // eslint-disable-next-line func-names
(function() { (function() {
'use strict'; 'use strict';
window.Whisper = window.Whisper || {}; window.Whisper = window.Whisper || {};
const blockedNumbers = new Whisper.BlockedNumberCollection(); const blockedNumbers = new Whisper.BlockedNumberCollection();
window.getBlockedNumbers = () => blockedNumbers; window.getBlockedNumbers = () => blockedNumbers;
window.BlockedNumberController = { window.BlockedNumberController = {
getAll() { getAll() {
try { try {
@ -26,7 +26,7 @@
}, },
load() { load() {
window.log.info('BlockedNumberController: starting initial fetch'); window.log.info('BlockedNumberController: starting initial fetch');
if (blockedNumbers.length) { if (blockedNumbers.length) {
throw new Error('BlockedNumberController: Already loaded!'); throw new Error('BlockedNumberController: Already loaded!');
} }
@ -82,5 +82,4 @@
return storage.isBlocked(number); return storage.isBlocked(number);
}, },
}; };
})(); })();

@ -89,5 +89,5 @@
return this.models.find(m => m.number === number); return this.models.find(m => m.number === number);
}, },
}); });
})(); })();

@ -129,7 +129,7 @@
setTimeout(() => { setTimeout(() => {
this.setFriendRequestTimer(); this.setFriendRequestTimer();
}, 0); }, 0);
const sealedSender = this.get('sealedSender'); const sealedSender = this.get('sealedSender');
if (sealedSender === undefined) { if (sealedSender === undefined) {
this.set({ sealedSender: SEALED_SENDER.UNKNOWN }); this.set({ sealedSender: SEALED_SENDER.UNKNOWN });
@ -153,10 +153,12 @@
block() { block() {
BlockedNumberController.block(this.id); BlockedNumberController.block(this.id);
this.trigger('change'); this.trigger('change');
this.messageCollection.forEach(m => m.trigger('change'));
}, },
unblock() { unblock() {
BlockedNumberController.unblock(this.id); BlockedNumberController.unblock(this.id);
this.trigger('change'); this.trigger('change');
this.messageCollection.forEach(m => m.trigger('change'));
}, },
async cleanup() { async cleanup() {
await window.Signal.Types.Conversation.deleteExternalFiles( await window.Signal.Types.Conversation.deleteExternalFiles(
@ -254,7 +256,7 @@
// Go through the messages and check for any pending friend requests // Go through the messages and check for any pending friend requests
const messages = await window.Signal.Data.getMessagesByConversation( const messages = await window.Signal.Data.getMessagesByConversation(
this.id, this.id,
{ {
type: 'friend-request', type: 'friend-request',
MessageCollection: Whisper.MessageCollection, MessageCollection: Whisper.MessageCollection,
} }

@ -8,7 +8,7 @@
// eslint-disable-next-line func-names // eslint-disable-next-line func-names
(function() { (function() {
'use strict'; 'use strict';
window.Whisper = window.Whisper || {}; window.Whisper = window.Whisper || {};
Whisper.BlockedNumberView = Whisper.View.extend({ Whisper.BlockedNumberView = Whisper.View.extend({
@ -25,7 +25,7 @@
}); });
this.listView.render(); this.listView.render();
this.$('.content').append(this.listView.el); this.$('.blocked-user-settings').append(this.listView.el);
}); });
}, },
render_attributes() { render_attributes() {
@ -37,12 +37,11 @@
Whisper.BlockedNumberListView = Whisper.ListView.extend({ Whisper.BlockedNumberListView = Whisper.ListView.extend({
tagName: 'div',
itemView: Whisper.View.extend({ itemView: Whisper.View.extend({
tagName: 'div', tagName: 'li',
templateName: 'blockedNumber', templateName: 'blockedNumber',
initialize() { events: {
this.listenTo(this.model, 'change', this.render); 'click .unblock-button': 'onUnblock',
}, },
render_attributes() { render_attributes() {
const number = (this.model && this.model.get('number')) || '-'; const number = (this.model && this.model.get('number')) || '-';
@ -50,7 +49,16 @@
number, number,
} }
}, },
onUnblock() {
const number = this.model && this.model.get('number');
if (!number) return;
if (BlockedNumberController.isBlocked(number)) {
BlockedNumberController.unblock(number);
window.onUnblockNumber(number);
this.remove();
}
},
}), }),
}); });
})(); })();

@ -930,6 +930,12 @@ ipc.on('set-media-permissions', (event, value) => {
event.sender.send('set-success-media-permissions', null); event.sender.send('set-success-media-permissions', null);
}); });
ipc.on('on-unblock-number', (event, number) => {
if (mainWindow && mainWindow.webContents) {
mainWindow.webContents.send('on-unblock-number', number);
}
});
installSettingsGetter('is-primary'); installSettingsGetter('is-primary');
installSettingsGetter('sync-request'); installSettingsGetter('sync-request');
installSettingsGetter('sync-time'); installSettingsGetter('sync-time');

@ -77,6 +77,21 @@ window.setMediaPermissions = enabled =>
ipc.send('set-media-permissions', enabled); ipc.send('set-media-permissions', enabled);
window.getMediaPermissions = () => ipc.sendSync('get-media-permissions'); window.getMediaPermissions = () => ipc.sendSync('get-media-permissions');
// Events for updating block number states across different windows
// In this case we need these to update the blocked number collection on the main window from the settings window
window.onUnblockNumber = number => ipc.send('on-unblock-number', number);
ipc.on('on-unblock-number', (event, number) => {
if (window.ConversationController) {
try {
const conversation = window.ConversationController.get(number);
conversation.unblock();
} catch (e) {
window.log.info('IPC on unblock: failed to fetch conversation for number: ', number);
}
}
});
window.closeAbout = () => ipc.send('close-about'); window.closeAbout = () => ipc.send('close-about');
window.updateTrayIcon = unreadCount => window.updateTrayIcon = unreadCount =>

@ -35,12 +35,14 @@
</div> </div>
</script> </script>
<script type='text/x-tmpl-mustache' id='blockedNumber'> <script type='text/x-tmpl-mustache' id='blockedNumber'>
<div>{{ number }}</div> <div class='blocked-number'>
<div class='wordwrap'>{{ number }}</div>
<button class='grey unblock-button'>Unblock</button>
</div> </div>
</script> </script>
<script type='text/x-tmpl-mustache' id='blockedUserSettings'> <script type='text/x-tmpl-mustache' id='blockedUserSettings'>
<h3>{{ blockedHeader }}</h3> <h3>{{ blockedHeader }}</h3>
<div class='content'> <div class='blocked-user-settings'>
</div> </div>
</script> </script>
<script type='text/x-tmpl-mustache' id='settings'> <script type='text/x-tmpl-mustache' id='settings'>

@ -26,6 +26,10 @@ window.getAppInstance = () => config.appInstance;
window.closeSettings = () => ipcRenderer.send('close-settings'); window.closeSettings = () => ipcRenderer.send('close-settings');
// Events for updating block number states across different windows
// In this case we need these to update the blocked number collection on the main window from the settings window
window.onUnblockNumber = number => ipcRenderer.send('on-unblock-number', number);
window.getDeviceName = makeGetter('device-name'); window.getDeviceName = makeGetter('device-name');
window.getThemeSetting = makeGetter('theme-setting'); window.getThemeSetting = makeGetter('theme-setting');

@ -38,6 +38,41 @@
color: red; color: red;
} }
} }
.blocked-number {
display: flex;
flex: 1;
flex-direction: row;
justify-content: center;
}
.blocked-number {
div {
flex: 1;
flex-wrap: wrap-reverse;
word-break: break-all;
}
button {
line-height: 36px;
padding: 0 20px;
margin: 0 0 20px 20px;
}
}
.blocked-user-settings ul {
list-style-type: none;
padding: 0;
margin: 0;
}
.wordwrap {
white-space: pre-wrap; /* CSS3 */
white-space: -moz-pre-wrap; /* Firefox */
white-space: -pre-wrap; /* Opera <7 */
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* IE */
}
.restart-needed { .restart-needed {
margin-top: 1em; margin-top: 1em;
} }

Loading…
Cancel
Save