Move left pane entirely to React

This commit is contained in:
Scott Nonnenberg 2019-01-14 13:49:58 -08:00
parent bf904ddd12
commit b3ac1373fa
142 changed files with 5016 additions and 3428 deletions

View file

@ -282,9 +282,9 @@ async function _finishJob(message, id) {
if (fromConversation && message !== fromConversation) {
fromConversation.set(message.attributes);
fromConversation.trigger('change');
fromConversation.trigger('change', fromConversation);
} else {
message.trigger('change');
message.trigger('change', message);
}
}
}

2
js/modules/data.d.ts vendored Normal file
View file

@ -0,0 +1,2 @@
export function searchMessages(query: string): Promise<Array<any>>;
export function searchConversations(query: string): Promise<Array<any>>;

View file

@ -96,7 +96,10 @@ module.exports = {
getAllConversationIds,
getAllPrivateConversations,
getAllGroupsInvolvingId,
searchConversations,
searchMessages,
searchMessagesInConversation,
getMessageCount,
saveMessage,
@ -624,12 +627,27 @@ async function getAllGroupsInvolvingId(id, { ConversationCollection }) {
return collection;
}
async function searchConversations(query, { ConversationCollection }) {
async function searchConversations(query) {
const conversations = await channels.searchConversations(query);
return conversations;
}
const collection = new ConversationCollection();
collection.add(conversations);
return collection;
async function searchMessages(query, { limit } = {}) {
const messages = await channels.searchMessages(query, { limit });
return messages;
}
async function searchMessagesInConversation(
query,
conversationId,
{ limit } = {}
) {
const messages = await channels.searchMessagesInConversation(
query,
conversationId,
{ limit }
);
return messages;
}
// Message

View file

@ -329,8 +329,11 @@ function isChunkSneaky(chunk) {
function isLinkSneaky(link) {
const domain = getDomain(link);
// This is necesary because getDomain returns domains in punycode form
const unicodeDomain = nodeUrl.domainToUnicode(domain);
// This is necesary because getDomain returns domains in punycode form. We check whether
// it's available for the StyleGuide.
const unicodeDomain = nodeUrl.domainToUnicode
? nodeUrl.domainToUnicode(domain)
: domain;
const chunks = unicodeDomain.split('.');
for (let i = 0, max = chunks.length; i < max; i += 1) {

View file

@ -1,5 +1,6 @@
// The idea with this file is to make it webpackable for the style guide
const { bindActionCreators } = require('redux');
const Backbone = require('../../ts/backbone');
const Crypto = require('./crypto');
const Data = require('./data');
@ -29,9 +30,6 @@ const { ContactName } = require('../../ts/components/conversation/ContactName');
const {
ConversationHeader,
} = require('../../ts/components/conversation/ConversationHeader');
const {
ConversationListItem,
} = require('../../ts/components/ConversationListItem');
const {
EmbeddedContact,
} = require('../../ts/components/conversation/EmbeddedContact');
@ -44,7 +42,6 @@ const { LightboxGallery } = require('../../ts/components/LightboxGallery');
const {
MediaGallery,
} = require('../../ts/components/conversation/media-gallery/MediaGallery');
const { MainHeader } = require('../../ts/components/MainHeader');
const { Message } = require('../../ts/components/conversation/Message');
const { MessageBody } = require('../../ts/components/conversation/MessageBody');
const {
@ -70,6 +67,12 @@ const {
VerificationNotification,
} = require('../../ts/components/conversation/VerificationNotification');
// State
const { createLeftPane } = require('../../ts/state/roots/createLeftPane');
const { createStore } = require('../../ts/state/createStore');
const conversationsDuck = require('../../ts/state/ducks/conversations');
const userDuck = require('../../ts/state/ducks/user');
// Migrations
const {
getPlaceholderMigrations,
@ -201,13 +204,11 @@ exports.setup = (options = {}) => {
ContactListItem,
ContactName,
ConversationHeader,
ConversationListItem,
EmbeddedContact,
Emojify,
GroupNotification,
Lightbox,
LightboxGallery,
MainHeader,
MediaGallery,
Message,
MessageBody,
@ -224,6 +225,20 @@ exports.setup = (options = {}) => {
VerificationNotification,
};
const Roots = {
createLeftPane,
};
const Ducks = {
conversations: conversationsDuck,
user: userDuck,
};
const State = {
bindActionCreators,
createStore,
Roots,
Ducks,
};
const Types = {
Attachment: AttachmentType,
Contact,
@ -262,6 +277,7 @@ exports.setup = (options = {}) => {
OS,
RefreshSenderCertificate,
Settings,
State,
Types,
Util,
Views,

View file

@ -20,7 +20,7 @@ const {
// contentType: MIMEType
// data: ArrayBuffer
// digest: ArrayBuffer
// fileName: string | null
// fileName?: string
// flags: null
// key: ArrayBuffer
// size: integer