Skip to content

Commit 673bb99

Browse files
committed
增加成员控制
1 parent 9c5ab38 commit 673bb99

File tree

7 files changed

+155
-12
lines changed

7 files changed

+155
-12
lines changed

conf/nbs.db

0 Bytes
Binary file not shown.

src/main/java/io/nbs/client/Launcher.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,4 +206,12 @@ public IPFS getIpfs() {
206206
public static SqlSession getSqlSession() {
207207
return sqlSession;
208208
}
209+
210+
/**
211+
*
212+
* @return
213+
*/
214+
public JFrame getCurrentFrame() {
215+
return currentFrame;
216+
}
209217
}

src/main/java/io/nbs/client/listener/IPFSFileUploader.java

Lines changed: 57 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,26 @@
11
package io.nbs.client.listener;
22

3+
import com.alibaba.fastjson.JSON;
34
import com.nbs.biz.service.AttachmentInfoService;
45
import io.ipfs.api.IPFS;
56
import io.ipfs.api.MerkleNode;
67
import io.ipfs.api.NamedStreamable;
8+
import io.nbs.client.Launcher;
9+
import io.nbs.client.cnsts.AppGlobalCnst;
10+
import io.nbs.client.services.IpfsMessageSender;
11+
import io.nbs.client.ui.frames.MainFrame;
12+
import io.nbs.client.ui.panels.im.messages.MessagePanel;
13+
import io.nbs.commons.utils.UUIDGenerator;
714
import io.nbs.sdk.beans.MessageItem;
15+
import io.nbs.sdk.beans.PeerInfo;
16+
import io.nbs.sdk.prot.IPMParser;
817
import org.apache.ibatis.session.SqlSession;
18+
import org.slf4j.Logger;
19+
import org.slf4j.LoggerFactory;
920

1021
import java.io.File;
1122
import java.io.IOException;
23+
import java.net.URLDecoder;
1224
import java.util.List;
1325

1426
/**
@@ -20,31 +32,37 @@
2032
* All rights reserved.
2133
*/
2234
public class IPFSFileUploader {
35+
private static Logger logger = LoggerFactory.getLogger(IPFSFileUploader.class);
2336
private static IPFS ipfs;
2437
private AttachmentInfoService service;
38+
private PeerInfo cureent;
39+
private MessagePanel messagePanel;
40+
private List<MessageItem> messageItems;
2541

2642
/**
2743
*
2844
* @param ipfs
2945
* @param sqlSession
3046
*/
31-
public IPFSFileUploader(IPFS ipfs, SqlSession sqlSession) {
47+
public IPFSFileUploader(IPFS ipfs, SqlSession sqlSession,MessagePanel panel,List<MessageItem> messageItems) {
3248
this.ipfs = ipfs;
3349
this.service = new AttachmentInfoService(sqlSession);
50+
cureent = Launcher.currentPeer;
51+
this.messagePanel = panel;
52+
this.messageItems = messageItems;
3453
}
3554

3655
/**
3756
*
3857
* @param file
3958
*/
4059
public void addFileToIPFS(File file){
41-
4260
if(!file.exists()||file.isDirectory())return;
43-
4461
try {
4562
NamedStreamable.FileWrapper fileWrapper = new NamedStreamable.FileWrapper(file);
4663
List<MerkleNode> list = ipfs.add(fileWrapper);
47-
uploadSuccessNotify();
64+
logger.info(JSON.toJSONString(list.get(0)));
65+
uploadSuccessNotify(list.get(0));
4866
uploadSuccessSaveDB(list);
4967
} catch (IOException e) {
5068
e.printStackTrace();
@@ -56,7 +74,39 @@ public void addFileToIPFS(File file){
5674
/**
5775
* 上传成功系统展示
5876
*/
59-
private void uploadSuccessNotify(){
77+
private void uploadSuccessNotify(MerkleNode node){
78+
MessageItem item = new MessageItem();
79+
item.setId(UUIDGenerator.getUUID());
80+
item.setTimestamp(System.currentTimeMillis());
81+
item.setSenderId(cureent.getId());
82+
item.setSenderUsername(cureent.getNick());
83+
item.setMessageType(MessageItem.RIGHT_TEXT);
84+
item.setAvatar(cureent.getAvatar());
85+
item.setFrom(cureent.getFrom());
86+
StringBuilder contentSb = new StringBuilder();
87+
String fileName = IPMParser.urlDecode(node.name.get());
88+
logger.info(fileName);
89+
contentSb.append("分享文件【").append(fileName).append("】成功.\n");
90+
contentSb.append("可通下面串码查询:\n");
91+
contentSb.append(node.hash.toBase58()).append("\n");
92+
//contentSb.append("或在浏览器输入链接:\n");
93+
//contentSb.append("http://127.0.0.1:8080/ipfs/").append(node.hash.toBase58());
94+
item.setMessageContent(contentSb.toString());
95+
boolean need = false;
96+
try {
97+
MainFrame.getContext().getMessageSender().ipfsSendMessage(contentSb.toString());
98+
} catch (Exception e) {
99+
need = true;
100+
e.printStackTrace();
101+
}
102+
if(messagePanel!=null&&messageItems!=null){
103+
item.setNeedToResend(need);
104+
messageItems.add(item);
105+
int pos = messageItems.size();
106+
messagePanel.getListView().notifyItemInserted(pos-1,true);
107+
}
108+
109+
// ipfs.pubsub.pub(IpfsMessageSender.NBSWORLD_IMS_TOPIC,)
60110

61111
}
62112

@@ -66,4 +116,6 @@ private void uploadSuccessNotify(){
66116
private void uploadSuccessSaveDB( List<MerkleNode> list){
67117

68118
}
119+
120+
69121
}

src/main/java/io/nbs/client/ui/panels/im/ChatPanel.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package io.nbs.client.ui.panels.im;
22

33
import com.nbs.ui.components.NbsBorder;
4+
import io.nbs.client.Launcher;
45
import io.nbs.client.adapter.ReceiverMessageAdapter;
56
import io.nbs.client.cnsts.ColorCnst;
7+
import io.nbs.client.listener.IPFSFileUploader;
68
import io.nbs.client.services.IpfsMessageSender;
79
import io.nbs.client.ui.frames.MainFrame;
810
import io.nbs.client.ui.panels.im.chatstmp.TMChatShowPanel;
911
import io.nbs.commons.helper.DateHelper;
1012
import io.nbs.commons.helper.RadomCharactersHelper;
13+
import io.nbs.commons.utils.DataBaseUtil;
1114
import io.nbs.commons.utils.UUIDGenerator;
1215
import io.nbs.sdk.beans.MessageItem;
1316
import io.ipfs.nbs.helper.MessageViewHolderCacheHelper;
@@ -55,19 +58,22 @@ public class ChatPanel extends ParentAvailablePanel {
5558
// 每次加载的消息条数
5659
private static final int PAGE_LENGTH = 20;
5760

58-
5961
private static List<String> remoteHistoryLoadedRooms = new ArrayList<>();
6062

6163
private java.util.List<MessageItem> messages = new ArrayList<>();
6264

63-
6465
private MessageViewHolderCacheHelper messageViewHolderCacheHelper;
6566
private MessageAdapter adapter;
6667

67-
private TMChatShowPanel chatShowPanel;
68+
6869
private PeerInfo current;
6970

7071
private ReceiverMessageAdapter receiverMessageAdapter;
72+
/**
73+
*
74+
*/
75+
private IPFSFileUploader ipfsFileUploader;
76+
7177

7278
/**
7379
*
@@ -79,6 +85,7 @@ public ChatPanel(JPanel parent) {
7985
current = MainFrame.getContext().getCurrentPeer();
8086
messageViewHolderCacheHelper = new MessageViewHolderCacheHelper();
8187

88+
8289
initComponents();
8390
/**
8491
* 消息接收
@@ -101,7 +108,8 @@ private void initComponents(){
101108
// chatShowPanel = new TMChatShowPanel(this);
102109
// chatShowPanel.setBorder(null);
103110

104-
messageEditorPanel = new MessageEditorPanel(this);
111+
ipfsFileUploader = new IPFSFileUploader(Launcher.getContext().getIpfs(),DataBaseUtil.getSqlSession(),messagePanel,messages);
112+
messageEditorPanel = new MessageEditorPanel(this,ipfsFileUploader);
105113
//messageEditorPanel.setPreferredSize(new Dimension(MainFrame.DEFAULT_WIDTH*2/5,200));
106114

107115
}
@@ -329,4 +337,7 @@ public static ChatPanel getContext() {
329337
}
330338

331339

340+
public IPFSFileUploader getIpfsFileUploader() {
341+
return ipfsFileUploader;
342+
}
332343
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package io.nbs.client.ui.panels.im;
2+
3+
import UI.AppMainWindow;
4+
import io.nbs.client.Launcher;
5+
import io.nbs.client.listener.IPFSFileUploader;
6+
import io.nbs.client.ui.frames.MainFrame;
7+
import org.slf4j.Logger;
8+
import org.slf4j.LoggerFactory;
9+
10+
import javax.swing.*;
11+
import java.awt.event.ActionEvent;
12+
import java.awt.event.ActionListener;
13+
import java.io.File;
14+
15+
/**
16+
* @Package : io.nbs.client.ui.panels.im
17+
* @Description : <p></p>
18+
* @Author : lambor.c
19+
* @Date : 2018/7/5-17:57
20+
* Copyright (c) 2018, NBS , lambor.c<[email protected]>.
21+
* All rights reserved.
22+
*/
23+
public class IMFileActionListener implements ActionListener {
24+
private static Logger logger = LoggerFactory.getLogger(IMFileActionListener.class);
25+
26+
private IPFSFileUploader fileUploader;
27+
28+
private JFileChooser jFileChooser;
29+
public IMFileActionListener(IPFSFileUploader fileUploader,JFileChooser fileChooser) {
30+
this.fileUploader = fileUploader;
31+
this.jFileChooser = fileChooser;
32+
}
33+
34+
@Override
35+
public void actionPerformed(ActionEvent e) {
36+
this.jFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
37+
this.jFileChooser.showDialog(Launcher.getContext().getCurrentFrame(),"选择");
38+
File selection = jFileChooser.getSelectedFile();
39+
if(selection==null)return;
40+
logger.info(selection.getAbsolutePath());
41+
fileUploader.addFileToIPFS(selection);
42+
}
43+
}

src/main/java/io/nbs/client/ui/panels/im/messages/MessageEditorPanel.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import UI.AppMainWindow;
44
import UI.ConstantsUI;
5+
import io.nbs.client.listener.IPFSFileUploader;
56
import io.nbs.client.ui.components.NBSIconButton;
67
import io.nbs.client.ui.components.NBSButton;
78
import io.nbs.client.cnsts.FontUtil;
@@ -13,9 +14,12 @@
1314
import com.nbs.ui.frames.ScreenShot;
1415
import io.nbs.client.ui.components.NBSIcon;
1516
import io.nbs.client.ui.panels.ParentAvailablePanel;
17+
import io.nbs.client.ui.panels.im.IMFileActionListener;
1618

1719
import javax.swing.*;
1820
import java.awt.*;
21+
import java.awt.event.ActionEvent;
22+
import java.awt.event.ActionListener;
1923
import java.awt.event.MouseAdapter;
2024
import java.awt.event.MouseEvent;
2125

@@ -51,14 +55,17 @@ public class MessageEditorPanel extends ParentAvailablePanel {
5155
private NBSIconButton cutIcon;
5256
private NBSIconButton fileIcon;
5357

54-
58+
private JFileChooser jFileChooser;
59+
private IMFileActionListener imFileActionListener;
5560

5661
/**
5762
*
5863
* @param parent
5964
*/
60-
public MessageEditorPanel(JPanel parent) {
65+
public MessageEditorPanel(JPanel parent, IPFSFileUploader uploader) {
6166
super(parent);
67+
jFileChooser = new JFileChooser();
68+
imFileActionListener = new IMFileActionListener(uploader,jFileChooser);
6269
initComponents();
6370
initView();
6471
setListeners();
@@ -162,6 +169,10 @@ private void initView(){
162169
*
163170
*/
164171
private void setListeners(){
172+
if(this.imFileActionListener!=null){
173+
fileIcon.addActionListener(imFileActionListener);
174+
}
175+
165176
fileIcon.addMouseListener(new MouseAdapter() {
166177
@Override
167178
public void mouseClicked(MouseEvent e) {
@@ -238,4 +249,6 @@ public JPanel getSendPanel() {
238249
public NBSButton getSendButton() {
239250
return sendButton;
240251
}
252+
253+
241254
}

src/main/java/io/nbs/sdk/prot/IPMParser.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
* All rights reserved.
2525
*/
2626
public class IPMParser {
27-
private static final String DEFAULT_ENCODING = "UTF-8";
27+
public static final String DEFAULT_ENCODING = "UTF-8";
2828

2929
/**
3030
* 默认NORMAL
@@ -54,6 +54,22 @@ public static String urlEncode(String content){
5454
return content;
5555
}
5656
}
57+
58+
/**
59+
*
60+
* @param url
61+
* @return
62+
*/
63+
public static String urlDecode(String url){
64+
if(null==url)return "";
65+
66+
try {
67+
url = URLDecoder.decode(url,DEFAULT_ENCODING);
68+
} catch (UnsupportedEncodingException e) {
69+
e.printStackTrace();
70+
}
71+
return url;
72+
}
5773
/**
5874
*
5975
* @param data

0 commit comments

Comments
 (0)