Skip to content

Commit f1d6eeb

Browse files
Merge pull request #84 from cabal-club/fix-initial-username-and-channel
Fix setting username and channel on initial load/creation of a cabal
2 parents 73a325b + ae2d465 commit f1d6eeb

File tree

5 files changed

+111
-223
lines changed

5 files changed

+111
-223
lines changed

app/actions.js

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ const readFile = promisify(fs.readFile)
1515
const writeFile = promisify(fs.writeFile)
1616
const mkdir = promisify(fs.mkdir)
1717

18+
const DEFAULT_CHANNEL = 'default'
19+
1820
var cabals = {}
1921

2022
export const viewCabal = ({addr}) => dispatch => {
@@ -57,8 +59,6 @@ export const updateCabal = (opts) => dispatch => {
5759
}
5860
export const joinChannel = ({addr, channel}) => dispatch => {
5961
if (channel.length > 0) {
60-
// var cabal = cabals[addr]
61-
// cabal.joinChannel(channel)
6262
dispatch(viewChannel({addr, channel}))
6363
}
6464
}
@@ -73,7 +73,7 @@ export const leaveChannel = ({addr, channel}) => dispatch => {
7373

7474
export const changeUsername = ({addr, username}) => dispatch => {
7575
var currentCabal = cabals[addr]
76-
currentCabal.username = username || catnames.random()
76+
currentCabal.username = username
7777
currentCabal.publishNick(username)
7878
dispatch({ type: 'UPDATE_CABAL', addr, username })
7979
}
@@ -140,7 +140,6 @@ export const addCabal = ({addr, input, username}) => dispatch => {
140140
initializeCabal({addr, username, dispatch})
141141
} else {
142142
// Create new Cabal
143-
username = username || catnames.random()
144143
var tempDir = path.join(homedir(), '.cabal-desktop/.tmp')
145144
var newCabal = Cabal(tempDir, null, {username})
146145
newCabal.getLocalKey((err, key) => {
@@ -151,6 +150,7 @@ export const addCabal = ({addr, input, username}) => dispatch => {
151150
}
152151

153152
const initializeCabal = ({addr, username, dispatch}) => {
153+
username = username || 'conspirator'
154154
var dir = path.join(homedir(), '.cabal-desktop', addr)
155155
var cabal = Cabal(dir, addr ? 'cabal://' + addr : null, {username})
156156

@@ -164,11 +164,12 @@ const initializeCabal = ({addr, username, dispatch}) => {
164164
cabal.key = addr
165165
var swarm = Swarm(cabal)
166166

167+
cabal.username = username
167168
cabal.client.swarm = swarm
168169
cabal.client.addr = addr
169-
cabal.client.channel = 'default'
170+
cabal.client.channel = DEFAULT_CHANNEL
170171
cabal.client.channels = []
171-
cabal.client.user = {}
172+
cabal.client.user = {name: username}
172173
cabal.client.users = {}
173174
cabal.client.channelMessages = {}
174175
cabal.client.channelMessagesUnread = {}
@@ -209,16 +210,21 @@ const initializeCabal = ({addr, username, dispatch}) => {
209210
}
210211

211212
cabal.channels.events.on('add', (channel) => {
212-
cabal.client.channels.push(channel)
213-
if (!cabal.client.channelListeners[channel]) {
214-
cabal.messages.events.on(channel, onMessage)
215-
cabal.client.channelListeners[channel] = onMessage
213+
if (!cabal.client.channels.includes(channel)) {
214+
cabal.client.channels.push(channel)
215+
if (!cabal.client.channelListeners[channel]) {
216+
cabal.messages.events.on(channel, onMessage)
217+
cabal.client.channelListeners[channel] = onMessage
218+
}
216219
}
217220
})
218221
cabal.channels.get((err, channels) => {
219222
if (err) return console.error(err)
220223
cabal.client.channels = channels
221-
dispatch(joinChannel({addr, channel: 'default'}))
224+
if (cabal.client.channels.length === 0) {
225+
cabal.client.channels.push(DEFAULT_CHANNEL)
226+
}
227+
dispatch(joinChannel({addr, channel: DEFAULT_CHANNEL}))
222228
cabal.client.channels.forEach((channel) => {
223229
if (!cabal.client.channelListeners[channel]) {
224230
cabal.messages.events.on(channel, onMessage)
@@ -230,25 +236,24 @@ const initializeCabal = ({addr, username, dispatch}) => {
230236
cabal.users.getAll((err, users) => {
231237
if (err) return
232238
cabal.client.users = users
233-
// Correct any bad user data
234-
Object.keys(cabal.client.users).forEach((key) => {
235-
let user = cabal.client.users[key]
236-
if (!user.name || user.name.trim().length === 0) {
237-
user.name = user.name || `conspirator ${user.key.substring(0, 4)}`
238-
}
239-
cabal.client.users[key] = user
240-
})
241-
242239
const updateLocalKey = () => {
243240
cabal.getLocalKey((err, lkey) => {
244241
if (err) return
242+
if (!Object.keys(cabal.client.users).includes(lkey)) {
243+
cabal.client.users[lkey] = {
244+
local: true,
245+
online: true,
246+
key: lkey,
247+
name: cabal.client.user.name || 'conspirator'
248+
}
249+
}
245250
Object.keys(cabal.client.users).forEach((key) => {
246251
if (key === lkey) {
247252
cabal.client.user = cabal.client.users[key]
248253
cabal.client.user.local = true
249254
cabal.client.user.online = true
250255
cabal.client.user.key = key
251-
cabal.username = cabal.client.user.name || catnames.random()
256+
cabal.username = cabal.client.user.name
252257
cabal.publishNick(cabal.username)
253258
}
254259
})
@@ -330,7 +335,7 @@ const storeOnDisk = async () => {
330335
(acc, addr) => ({
331336
...acc,
332337
[addr]: JSON.stringify({
333-
username: cabals[addr].client.user.name,
338+
username: cabals[addr].username || 'conspirator',
334339
addr: cabals[addr].client.addr
335340
})
336341
}),

app/containers/messages.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,10 @@ export default function MessagesContainer (props) {
4242
return (
4343
<div key={index} className='messages__item'>
4444
<div className='messages__item__avatar'>
45-
{repeatedAuthor ? null : <Avatar name={message.author} />}
45+
{repeatedAuthor ? null : <Avatar name={message.author || 'conspirator'} />}
4646
</div>
4747
<div className='messages__item__metadata'>
48-
{repeatedAuthor ? null : <div className='messages__item__metadata__name'>{message.author}<span>{moment(message.time).format('h:mm A')}</span></div>}
48+
{repeatedAuthor ? null : <div className='messages__item__metadata__name'>{message.author || 'conspirator'}<span>{moment(message.time).format('h:mm A')}</span></div>}
4949
<div className={repeatedAuthor ? 'text indent' : 'text'}>
5050
{enrichText(message.content)}
5151
</div>
@@ -58,7 +58,7 @@ export default function MessagesContainer (props) {
5858
<div key={index} className='messages__item messages__item--emote'>
5959
<div className='messages__item__avatar'>
6060
<div className='messages__item__avatar__img'>
61-
{repeatedAuthor ? null : <Avatar name={message.author} />}
61+
{repeatedAuthor ? null : <Avatar name={message.author || 'conspirator'} />}
6262
</div>
6363
</div>
6464
<div className='messages__item__metadata'>

app/containers/sidebar.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ class SidebarScreen extends React.Component {
122122
<img src='static/images/icon-status-offline.svg' />
123123
}
124124
</div>
125-
<div className='collection__item__content'>{user.name}</div>
125+
<div className='collection__item__content'>{user.name || user.key.substring(0, 6)}</div>
126126
<div className='collection__item__handle' />
127127
</div>
128128
)}

0 commit comments

Comments
 (0)