@@ -15,6 +15,8 @@ const readFile = promisify(fs.readFile)
15
15
const writeFile = promisify ( fs . writeFile )
16
16
const mkdir = promisify ( fs . mkdir )
17
17
18
+ const DEFAULT_CHANNEL = 'default'
19
+
18
20
var cabals = { }
19
21
20
22
export const viewCabal = ( { addr} ) => dispatch => {
@@ -57,8 +59,6 @@ export const updateCabal = (opts) => dispatch => {
57
59
}
58
60
export const joinChannel = ( { addr, channel} ) => dispatch => {
59
61
if ( channel . length > 0 ) {
60
- // var cabal = cabals[addr]
61
- // cabal.joinChannel(channel)
62
62
dispatch ( viewChannel ( { addr, channel} ) )
63
63
}
64
64
}
@@ -73,7 +73,7 @@ export const leaveChannel = ({addr, channel}) => dispatch => {
73
73
74
74
export const changeUsername = ( { addr, username} ) => dispatch => {
75
75
var currentCabal = cabals [ addr ]
76
- currentCabal . username = username || catnames . random ( )
76
+ currentCabal . username = username
77
77
currentCabal . publishNick ( username )
78
78
dispatch ( { type : 'UPDATE_CABAL' , addr, username } )
79
79
}
@@ -140,7 +140,6 @@ export const addCabal = ({addr, input, username}) => dispatch => {
140
140
initializeCabal ( { addr, username, dispatch} )
141
141
} else {
142
142
// Create new Cabal
143
- username = username || catnames . random ( )
144
143
var tempDir = path . join ( homedir ( ) , '.cabal-desktop/.tmp' )
145
144
var newCabal = Cabal ( tempDir , null , { username} )
146
145
newCabal . getLocalKey ( ( err , key ) => {
@@ -151,6 +150,7 @@ export const addCabal = ({addr, input, username}) => dispatch => {
151
150
}
152
151
153
152
const initializeCabal = ( { addr, username, dispatch} ) => {
153
+ username = username || 'conspirator'
154
154
var dir = path . join ( homedir ( ) , '.cabal-desktop' , addr )
155
155
var cabal = Cabal ( dir , addr ? 'cabal://' + addr : null , { username} )
156
156
@@ -164,11 +164,12 @@ const initializeCabal = ({addr, username, dispatch}) => {
164
164
cabal . key = addr
165
165
var swarm = Swarm ( cabal )
166
166
167
+ cabal . username = username
167
168
cabal . client . swarm = swarm
168
169
cabal . client . addr = addr
169
- cabal . client . channel = 'default'
170
+ cabal . client . channel = DEFAULT_CHANNEL
170
171
cabal . client . channels = [ ]
171
- cabal . client . user = { }
172
+ cabal . client . user = { name : username }
172
173
cabal . client . users = { }
173
174
cabal . client . channelMessages = { }
174
175
cabal . client . channelMessagesUnread = { }
@@ -209,16 +210,21 @@ const initializeCabal = ({addr, username, dispatch}) => {
209
210
}
210
211
211
212
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
+ }
216
219
}
217
220
} )
218
221
cabal . channels . get ( ( err , channels ) => {
219
222
if ( err ) return console . error ( err )
220
223
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 } ) )
222
228
cabal . client . channels . forEach ( ( channel ) => {
223
229
if ( ! cabal . client . channelListeners [ channel ] ) {
224
230
cabal . messages . events . on ( channel , onMessage )
@@ -230,25 +236,24 @@ const initializeCabal = ({addr, username, dispatch}) => {
230
236
cabal . users . getAll ( ( err , users ) => {
231
237
if ( err ) return
232
238
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
-
242
239
const updateLocalKey = ( ) => {
243
240
cabal . getLocalKey ( ( err , lkey ) => {
244
241
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
+ }
245
250
Object . keys ( cabal . client . users ) . forEach ( ( key ) => {
246
251
if ( key === lkey ) {
247
252
cabal . client . user = cabal . client . users [ key ]
248
253
cabal . client . user . local = true
249
254
cabal . client . user . online = true
250
255
cabal . client . user . key = key
251
- cabal . username = cabal . client . user . name || catnames . random ( )
256
+ cabal . username = cabal . client . user . name
252
257
cabal . publishNick ( cabal . username )
253
258
}
254
259
} )
@@ -330,7 +335,7 @@ const storeOnDisk = async () => {
330
335
( acc , addr ) => ( {
331
336
...acc ,
332
337
[ addr ] : JSON . stringify ( {
333
- username : cabals [ addr ] . client . user . name ,
338
+ username : cabals [ addr ] . username || 'conspirator' ,
334
339
addr : cabals [ addr ] . client . addr
335
340
} )
336
341
} ) ,
0 commit comments