Browse Source

add to frontend for testing tribe create/join, various fixes

feature/dockerfile-arm
Evan Feenstra 5 years ago
parent
commit
fd5f3c19cb
  1. 6
      api/controllers/chats.ts
  2. 1
      api/controllers/index.ts
  3. 7
      api/network/send.ts
  4. 1
      api/utils/json.ts
  5. 7
      dist/api/controllers/chats.js
  6. 2
      dist/api/controllers/chats.js.map
  7. 1
      dist/api/controllers/index.js
  8. 2
      dist/api/controllers/index.js.map
  9. 7
      dist/api/network/send.js
  10. 2
      dist/api/network/send.js.map
  11. 1
      dist/api/utils/json.js
  12. 2
      dist/api/utils/json.js.map
  13. 523
      dist/public/js/app.js
  14. 9
      frontend/components/Root.jsx
  15. 79
      frontend/components/Tribes/index.jsx
  16. 523
      public/js/app.js

6
api/controllers/chats.ts

@ -42,12 +42,12 @@ async function mute(req, res) {
async function createGroupChat(req, res) {
const {
name,
contact_ids,
is_tribe,
is_listed,
// price_per_message,
// price_to_join,
} = req.body
const contact_ids = req.body.contact_ids||[]
const members: { [k: string]: {[k:string]:string} } = {} //{pubkey:{key,alias}, ...}
const owner = await models.Contact.findOne({ where: { isOwner: true } })
@ -163,7 +163,7 @@ const deleteChat = async (req, res) => {
async function joinTribe(req, res){
console.log('=> joinTribe')
const { uuid, group_key, chat_name, host } = req.params
const { uuid, group_key, name, host } = req.body
const ownerPubKey = await tribes.verifySignedTimestamp(uuid)
const tribeOwner = await models.Contact.findOne({ where: { publicKey: ownerPubKey } })
@ -191,7 +191,7 @@ async function joinTribe(req, res){
contactIds: JSON.stringify(contactIds),
createdAt: date,
updatedAt: date,
name: chat_name,
name: name,
type: constants.chat_types.tribe,
host: host || tribes.getHost(),
groupKey: group_key,

1
api/controllers/index.ts

@ -34,6 +34,7 @@ async function set(app) {
app.post('/chats/:chat_id/:mute_unmute', controllers.chats.mute)
app.delete('/chat/:id', controllers.chats.deleteChat)
app.put('/chat/:id', controllers.chats.addGroupMembers)
app.post('/tribe', controllers.chats.joinTribe)
app.post('/contacts/tokens', controllers.contacts.generateToken)

7
api/network/send.ts

@ -49,7 +49,12 @@ export async function sendMessage(params) {
const { type, chat, message, sender, amount, success, failure } = params
const m = newmsg(type, chat, sender, message)
const contactIds = typeof chat.contactIds==='string' ? JSON.parse(chat.contactIds) : chat.contactIds
const contactIds = (typeof chat.contactIds==='string' ? JSON.parse(chat.contactIds) : chat.contactIds) || []
if(contactIds.length===1) {
if (contactIds[0]===1) {
return success(true) // if no contacts thats fine (like create tribe)
}
}
let yes:any = null
let no:any = null

1
api/utils/json.ts

@ -7,6 +7,7 @@ function chatToJson(c) {
if(chat.contactIds && typeof chat.contactIds==='string'){
contactIds = JSON.parse(chat.contactIds)
}
delete chat.groupPrivateKey
return toSnake({
...chat,
contactIds

7
dist/api/controllers/chats.js

@ -49,7 +49,8 @@ exports.mute = mute;
// or can u add contacts as members?
function createGroupChat(req, res) {
return __awaiter(this, void 0, void 0, function* () {
const { name, contact_ids, is_tribe, is_listed, } = req.body;
const { name, is_tribe, is_listed, } = req.body;
const contact_ids = req.body.contact_ids || [];
const members = {}; //{pubkey:{key,alias}, ...}
const owner = yield models_1.models.Contact.findOne({ where: { isOwner: true } });
members[owner.publicKey] = {
@ -161,7 +162,7 @@ exports.deleteChat = deleteChat;
function joinTribe(req, res) {
return __awaiter(this, void 0, void 0, function* () {
console.log('=> joinTribe');
const { uuid, group_key, chat_name, host } = req.params;
const { uuid, group_key, name, host } = req.body;
const ownerPubKey = yield tribes.verifySignedTimestamp(uuid);
const tribeOwner = yield models_1.models.Contact.findOne({ where: { publicKey: ownerPubKey } });
let theTribeOwner;
@ -189,7 +190,7 @@ function joinTribe(req, res) {
contactIds: JSON.stringify(contactIds),
createdAt: date,
updatedAt: date,
name: chat_name,
name: name,
type: constants.chat_types.tribe,
host: host || tribes.getHost(),
groupKey: group_key,

2
dist/api/controllers/chats.js.map

File diff suppressed because one or more lines are too long

1
dist/api/controllers/index.js

@ -43,6 +43,7 @@ function set(app) {
app.post('/chats/:chat_id/:mute_unmute', controllers.chats.mute);
app.delete('/chat/:id', controllers.chats.deleteChat);
app.put('/chat/:id', controllers.chats.addGroupMembers);
app.post('/tribe', controllers.chats.joinTribe);
app.post('/contacts/tokens', controllers.contacts.generateToken);
app.post('/upload', controllers.uploads.avatarUpload.single('file'), controllers.uploads.uploadFile);
app.post('/invites', controllers.invites.createInvite);

2
dist/api/controllers/index.js.map

File diff suppressed because one or more lines are too long

7
dist/api/network/send.js

@ -62,7 +62,12 @@ function sendMessage(params) {
return __awaiter(this, void 0, void 0, function* () {
const { type, chat, message, sender, amount, success, failure } = params;
const m = newmsg(type, chat, sender, message);
const contactIds = typeof chat.contactIds === 'string' ? JSON.parse(chat.contactIds) : chat.contactIds;
const contactIds = (typeof chat.contactIds === 'string' ? JSON.parse(chat.contactIds) : chat.contactIds) || [];
if (contactIds.length === 1) {
if (contactIds[0] === 1) {
return success(true); // if no contacts thats fine (like create tribe)
}
}
let yes = null;
let no = null;
console.log('all contactIds', contactIds);

2
dist/api/network/send.js.map

@ -1 +1 @@
{"version":3,"file":"send.js","sourceRoot":"","sources":["../../../api/network/send.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,sCAAkC;AAClC,0CAAyC;AACzC,sCAA+C;AAC/C,6BAA4B;AAC5B,0CAAyC;AAEzC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAC,6BAA6B,CAAC,CAAC,CAAA;AAE7E,SAAgB,WAAW,CAAC,IAAI;IAC/B,OAAO,IAAI,OAAO,CAAC,UAAe,OAAO,EAAE,MAAM;;YAChD,IAAG,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAG,QAAQ,EAAE;gBAC7C,OAAO,MAAM,CAAC,YAAY,CAAC,CAAA;aAC3B;YACD,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACpC,2BAA2B;YAC3B,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;YACrC,IAAI,GAAG,IAAI,GAAG,GAAG,CAAA;YAEjB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YACnB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAEtB,IAAI;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;gBACzB,IAAG,OAAO,CAAC,IAAI,IAAE,OAAO,CAAC,IAAI,CAAC,IAAI,KAAG,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE;oBAChE,8DAA8D;oBAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAA;oBAClC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAA;oBAC3B,IAAG,CAAC,QAAQ,IAAI,CAAC,SAAS;wBAAE,OAAM;oBAClC,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAA;oBACrE,MAAM,KAAK,GAAG,MAAM,eAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;oBACxE,IAAG,KAAK,CAAC,SAAS,KAAG,gBAAgB,EAAC;wBACrC,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS,IAAI,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAA;qBAChD;yBAAM;wBACN,6BAA6B;wBAC7B,IAAG,SAAS,KAAG,gBAAgB,EAAE;4BAChC,GAAG,CAAC,cAAc,iCAAK,IAAI,KAAC,IAAI,IAAE,CAAA;yBAClC;qBACD;iBACD;qBAAM;oBACN,GAAG,CAAC,cAAc,iCAAK,IAAI,KAAC,IAAI,IAAE,CAAA;iBAClC;aACD;YAAC,OAAM,CAAC,EAAE;gBACV,MAAM,CAAC,CAAA;aACP;QACF,CAAC;KAAA,CAAC,CAAA;AACH,CAAC;AArCD,kCAqCC;AAED,SAAsB,WAAW,CAAC,MAAM;;QACvC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;QACxE,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAE7C,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,UAAU,KAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAA;QAEpG,IAAI,GAAG,GAAO,IAAI,CAAA;QAClB,IAAI,EAAE,GAAO,IAAI,CAAA;QACjB,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAC,UAAU,CAAC,CAAA;QACxC,MAAM,YAAY,CAAC,UAAU,EAAE,CAAM,SAAS,EAAC,EAAE;YAChD,IAAI,SAAS,IAAI,MAAM,CAAC,EAAE,EAAE;gBAC3B,OAAM;aACN;YAED,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,SAAS,CAAC,CAAA;YAEjD,MAAM,OAAO,GAAG,MAAM,eAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;YAC1E,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAA;YAEjC,MAAM,QAAQ,GAAG,MAAM,wBAAkB,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;YAEhE,MAAM,IAAI,GAAG;gBACZ,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;aACxB,CAAA;YACD,IAAI;gBACH,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAA;gBACjC,GAAG,GAAG,CAAC,CAAA;aACP;YAAC,OAAO,CAAC,EAAE;gBACX,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,CAAA;gBAC/B,EAAE,GAAG,CAAC,CAAA;aACN;QACF,CAAC,CAAA,CAAC,CAAA;QACF,IAAG,GAAG,EAAC;YACN,IAAG,OAAO;gBAAE,OAAO,CAAC,GAAG,CAAC,CAAA;SACxB;aAAM;YACN,IAAG,OAAO;gBAAE,OAAO,CAAC,EAAE,CAAC,CAAA;SACvB;IACF,CAAC;CAAA;AAvCD,kCAuCC;AAED,SAAS,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO;IAC1C,OAAO;QACN,IAAI,EAAE,IAAI;QACV,IAAI,0EACH,IAAI,EAAE,IAAI,CAAC,IAAI,IACZ,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAChC,CAAC,IAAI,CAAC,IAAI,IAAE,IAAI,CAAC,IAAI,KAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GACjD,IAAI,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,GACzC,IAAI,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,GAC5C,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CACnC;QACD,OAAO,EAAE,OAAO;KAKhB,CAAA;AACF,CAAC;AAED,SAAe,YAAY,CAAC,KAAK,EAAE,QAAQ;;QAC1C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAChD,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;SAC7C;IACF,CAAC;CAAA"}
{"version":3,"file":"send.js","sourceRoot":"","sources":["../../../api/network/send.ts"],"names":[],"mappings":"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"}

1
dist/api/utils/json.js

@ -8,6 +8,7 @@ function chatToJson(c) {
if (chat.contactIds && typeof chat.contactIds === 'string') {
contactIds = JSON.parse(chat.contactIds);
}
delete chat.groupPrivateKey;
return case_1.toSnake(Object.assign(Object.assign({}, chat), { contactIds }));
}
exports.chatToJson = chatToJson;

2
dist/api/utils/json.js.map

@ -1 +1 @@
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../../api/utils/json.ts"],"names":[],"mappings":";;AAAA,wCAA6C;AAC7C,oCAAmC;AAEnC,SAAS,UAAU,CAAC,CAAC;IACnB,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,IAAE,CAAC,CAAA;IAC5B,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAA;IACxC,IAAG,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,UAAU,KAAG,QAAQ,EAAC;QACtD,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;KACzC;IACD,OAAO,cAAO,iCACT,IAAI,KACP,UAAU,IACV,CAAA;AACJ,CAAC;AAsCC,gCAAU;AApCZ,SAAS,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,OAAQ;IACxC,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,IAAE,GAAG,CAAA;IACnC,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAA;IACzC,IAAG,OAAO,CAAC,SAAS,IAAI,OAAO,OAAO,CAAC,SAAS,KAAG,QAAQ,EAAC;QAC1D,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;KAC1C;IACD,OAAO,cAAO,iCACT,OAAO,KACV,SAAS,EACT,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EACpC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,IAChD,CAAA;AACJ,CAAC;AAoBC,sCAAa;AAlBf,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,cAAO,CAAC,OAAO,CAAC,UAAU,IAAE,OAAO,CAAC,CAAA;AAmBrE,sCAAa;AAjBf,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,cAAO,CAAC,MAAM,CAAC,UAAU,IAAE,MAAM,CAAC,CAAA;AAkBjE,oCAAY;AAhBd,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,cAAO,CAAC,IAAI,CAAC,CAAA;AAiB3C,sCAAa;AAff,SAAS,kBAAkB,CAAC,YAAY,EAAE,IAAI;IAC5C,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,IAAI,YAAY,CAAA;IACnD,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACpD,OAAO,cAAO,iCACT,GAAG,KACN,QAAQ;QACR,IAAI,EACJ,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IACpC,CAAA;AACJ,CAAC;AAQC,gDAAkB"}
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../../api/utils/json.ts"],"names":[],"mappings":";;AAAA,wCAA6C;AAC7C,oCAAmC;AAEnC,SAAS,UAAU,CAAC,CAAC;IACnB,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,IAAE,CAAC,CAAA;IAC5B,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAA;IACxC,IAAG,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,UAAU,KAAG,QAAQ,EAAC;QACtD,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;KACzC;IACD,OAAO,IAAI,CAAC,eAAe,CAAA;IAC3B,OAAO,cAAO,iCACT,IAAI,KACP,UAAU,IACV,CAAA;AACJ,CAAC;AAsCC,gCAAU;AApCZ,SAAS,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,OAAQ;IACxC,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,IAAE,GAAG,CAAA;IACnC,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAA;IACzC,IAAG,OAAO,CAAC,SAAS,IAAI,OAAO,OAAO,CAAC,SAAS,KAAG,QAAQ,EAAC;QAC1D,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;KAC1C;IACD,OAAO,cAAO,iCACT,OAAO,KACV,SAAS,EACT,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EACpC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,IAChD,CAAA;AACJ,CAAC;AAoBC,sCAAa;AAlBf,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,cAAO,CAAC,OAAO,CAAC,UAAU,IAAE,OAAO,CAAC,CAAA;AAmBrE,sCAAa;AAjBf,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,cAAO,CAAC,MAAM,CAAC,UAAU,IAAE,MAAM,CAAC,CAAA;AAkBjE,oCAAY;AAhBd,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,cAAO,CAAC,IAAI,CAAC,CAAA;AAiB3C,sCAAa;AAff,SAAS,kBAAkB,CAAC,YAAY,EAAE,IAAI;IAC5C,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,IAAI,YAAY,CAAA;IACnD,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACpD,OAAO,cAAO,iCACT,GAAG,KACN,QAAQ;QACR,IAAI,EACJ,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IACpC,CAAA;AACJ,CAAC;AAQC,gDAAkB"}

523
dist/public/js/app.js

File diff suppressed because it is too large

9
frontend/components/Root.jsx

@ -7,6 +7,7 @@ import Login from './Login.jsx'
import {ctx} from './context.jsx'
import Subscriptions from './Subscriptions/index.jsx';
import Media from './Media/index.jsx';
import Tribes from './Tribes/index.jsx';
class Root extends React.Component {
constructor(props) {
@ -88,19 +89,22 @@ class Root extends React.Component {
getMessages() {
fetch('/messages').then(r => r.json()).then(body => {
console.log("MESSAGES",body.response)
this.setState({ messages: body.response.new_messages })
})
}
getContacts() {
console.log("get contacts")
fetch('/contacts').then(r => r.json()).then(body => {
this.setState({ contacts: body.response.contacts })
this.setState({
contacts: body.response.contacts,
})
})
}
getChats() {
fetch('/chats').then(r => r.json()).then(body => {
console.log("CHATS",body.response)
this.setState({ chats: body.response })
})
}
@ -134,6 +138,7 @@ class Root extends React.Component {
contacts={contacts} chats={chats}
identity_pubkey={identity_pubkey}
/></Tab.Pane> },
{ menuItem: 'Tribes', render: () => <Tab.Pane><Tribes chats={chats}/></Tab.Pane> },
]}
renderActiveOnly={true}
/>

79
frontend/components/Tribes/index.jsx

@ -0,0 +1,79 @@
import React from 'react';
import styles from '../Contacts/styles'
import { Button, Checkbox, Form } from 'semantic-ui-react'
import * as api from '../../api'
export default class Tribes extends React.Component {
constructor(props) {
super(props)
this.state = {
values: {}
}
}
async onNewTribe(v) {
const name = v.tribe_name
console.log("NAME",name)
const r = await api.relay.POST('group',{
name,
is_tribe:true,
})
console.log(r)
}
async onSave(v) {
console.log(v)
const r = await api.relay.POST('tribe',{
chat_name: v.name,
uuid: v.uuid,
group_key: v.group_key,
})
console.log(r)
}
onCancel() {
}
setValue(key, value) {
let new_values = {...this.state.values}
new_values[key] = value
this.setState({ values: new_values })
}
render() {
const {chats} = this.props
const {values} = this.state
const fields = ['uuid','group_key','name']
return <div>
<div>
<h3>JOIN TRIBE</h3>
<Form onSubmit={() => this.onSave(values)}>
{fields.map(field => (
<Form.Field key={field}>
<label>{field}</label>
<input value={values[field]} onChange={e => this.setValue(field, e.target.value)} />
</Form.Field>
))}
<div>
<button className="ui button primary">Save</button>
</div>
</Form>
</div>
<div>
<h3>CREATE NEW TRIBE</h3>
<Form onSubmit={() => this.onNewTribe(values)}>
{['tribe_name'].map(field => (
<Form.Field key={field}>
<label>{field}</label>
<input value={values[field]} onChange={e => this.setValue(field, e.target.value)} />
</Form.Field>
))}
<div>
<button className="ui button primary">Save</button>
</div>
</Form>
</div>
</div>
}
}

523
public/js/app.js

File diff suppressed because it is too large
Loading…
Cancel
Save