improve conversation view
Change-Id: I63189d0b61d45e659ac7618a977282f7b4500753
diff --git a/routes/jami.js b/routes/jami.js
index 9ba97a7..5d50002 100644
--- a/routes/jami.js
+++ b/routes/jami.js
@@ -7,6 +7,7 @@
getRouter() {
const router = express.Router({mergeParams: true})
+ router.use(express.json());
// Accounts
router.get(['/accounts'], (req, res, next) => {
@@ -14,7 +15,10 @@
res.json(this.jami.getAccountList().map(account => account.getSummary()))
})
- router.get(['/accounts/:accountId'], (req, res, next) => {
+ const accountRouter = express.Router({mergeParams: true})
+ router.use('/accounts/:accountId', accountRouter)
+
+ accountRouter.get(['/'], (req, res, next) => {
console.log(`Get account ${req.params.accountId}`)
const account = this.jami.getAccount(req.params.accountId)
if (account)
@@ -24,7 +28,7 @@
})
// Contacts
- router.get(['/accounts/:accountId/contacts'], (req, res, next) => {
+ accountRouter.get(['/contacts'], (req, res, next) => {
console.log(`Get account ${req.params.accountId}`)
const account = this.jami.getAccount(req.params.accountId)
if (account)
@@ -34,24 +38,79 @@
})
// Conversations
- const conversationRouter = express.Router({mergeParams: true})
- conversationRouter.get('/', (req, res, next) => {
+ accountRouter.get('/conversations', (req, res, next) => {
console.log(`Get conversations for account ${req.params.accountId}`)
const account = this.jami.getAccount(req.params.accountId)
if (!account)
res.sendStatus(404)
- res.json(account.getConversationIds())
+ const conversations = account.getConversations()
+ res.json(Object.keys(conversations).map(conversationId => conversations[conversationId].getObject({
+ memberFilter: member => member.contact.getUri() !== account.getUri()
+ })))
+ //res.json(account.getConversations())
})
- conversationRouter.get('/:conversationId', (req, res, next) => {
+ accountRouter.post('/conversations', (req, res, next) => {
+ console.log(`Create conversations for account, contact ${req.params.accountId}`)
+ console.log(req.body)
+ const account = this.jami.getAccount(req.params.accountId)
+ if (!account)
+ res.sendStatus(404)
+ if (req.body.members.length === 1) {
+ const details = this.jami.addContact(req.params.accountId, req.body.members[0])
+ res.json(details)
+ } else
+ res.sendStatus(400)
+ })
+
+ accountRouter.get('/conversations/:conversationId', (req, res, next) => {
console.log(`Get conversation ${req.params.conversationId} for account ${req.params.accountId}`)
const account = this.jami.getAccount(req.params.accountId)
if (!account)
res.sendStatus(404)
- res.json(account.getConversation(req.params.conversationId))
+ const conversation = account.getConversation(req.params.conversationId)
+ if (!conversation)
+ res.sendStatus(404)
+ else {
+ res.json(conversation.getObject({
+ memberFilter: member => member.contact.getUri() !== account.getUri()
+ }))
+ }
})
- router.use('/accounts/:accountId/conversations', conversationRouter)
+ // Nameserver
+ const nsRouter = express.Router({mergeParams: true})
+ accountRouter.use('/ns', nsRouter)
+
+ nsRouter.get(['/name/:nameQuery'], (req, res, next) => {
+ console.log(`Name lookup ${req.params.nameQuery}`)
+ this.jami.lookupName(req.params.accountId, req.params.nameQuery)
+ .then(result => {
+ if (result.state == 0)
+ res.json(result)
+ else if (result.state == 1)
+ res.sendStatus(400)
+ else
+ res.sendStatus(404)
+ }).catch(e => {
+ res.sendStatus(404)
+ })
+ })
+ nsRouter.get(['/addr/:addrQuery'], (req, res, next) => {
+ console.log(`Address lookup ${req.params.addrQuery}`)
+ this.jami.lookupAddress(req.params.accountId, req.params.addrQuery)
+ .then(result => {
+ if (result.state == 0)
+ res.json(result)
+ else if (result.state == 1)
+ res.sendStatus(400)
+ else
+ res.sendStatus(404)
+ }).catch(e => {
+ res.sendStatus(404)
+ })
+ })
+
return router
}
}