Skip to content

Commit bf9085d

Browse files
author
caiyg
committed
修复单聊显示群聊头像的bug
1 parent c4d0d39 commit bf9085d

File tree

7 files changed

+48
-36
lines changed

7 files changed

+48
-36
lines changed

android/app/src/io/jchat/android/tools/ConversationToJSON.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ public ConversationToJSON(Context context, List<Conversation> data) {
107107
avatar = "data:image/png;base64," + getBinaryData(avatarFile);
108108
}
109109
if (conv.getType() == ConversationType.single){
110+
avatar = "head_icon";
110111
username = ((UserInfo) conv.getTargetInfo()).getUserName();
111112
} else {
112113
avatar = "group";

react-native-android/containers/chat_activity.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ export default class ChatActivity extends Component {
155155
dataSource = { messageReducer.dataSource }
156156
renderHeader = { this.renderHeader }
157157
renderRow = { this.renderRow }
158+
enableEmptySections = { true }
158159
keyboardDismissMode="on-drag"
159160
keyboardShouldPersistTaps={ true }
160161
showsVerticalScrollIndicator={ false }/>

react-native-android/containers/conv_fragment.js

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,8 @@ export default class Conv extends Component {
6868
DeviceEventEmitter.addListener('networkError', (state) => {
6969
this.setState({ disconnected: state });
7070
});
71-
// BackAndroid.addEventListener('hardwareBackPress', this.hardwareBackPress);
72-
}
73-
74-
hardwareBackPress = () => {
75-
if (this.state.showDropDownMenu) {
71+
BackAndroid.addEventListener('hardwareBackPress', () => {
72+
if (this.state.showDropDownMenu) {
7673
this.dismissDropDownMenu();
7774
return true;
7875
} else if (this.state.showAddFriendDialog) {
@@ -83,16 +80,16 @@ export default class Conv extends Component {
8380
return true;
8481
}
8582
return false;
86-
};
83+
});
84+
}
8785

8886
componentWillUnmount() {
89-
// BackAndroid.removeEventListener('hardwareBackPress', this.hardwareBackPress);
87+
BackAndroid.removeEventListener('hardwareBackPress');
9088
DeviceEventEmitter.removeAllListeners();
9189
}
9290

9391

9492
renderRow(convItem: Object, sectionID: number, rowID: number) {
95-
9693
return (
9794
<TouchableHighlight
9895
onLongPress = { () => this.longPressRow(rowID) }
@@ -156,7 +153,6 @@ export default class Conv extends Component {
156153
}
157154

158155
renderHeader() {
159-
console.log('disconnected: ' + this.state.disconnected);
160156
if (this.state.disconnected) {
161157
return (
162158
<View style = { styles.header }>
@@ -178,7 +174,7 @@ export default class Conv extends Component {
178174
if (this.state.showDropDownMenu) {
179175
this.dismissDropDownMenu();
180176
} else {
181-
this.state.y.setValue(-200);
177+
this.state.y.setValue(-600);
182178
this.state.scaleAnimation.setValue(1);
183179
Animated.spring(this.state.y, {
184180
toValue: 0
@@ -190,7 +186,7 @@ export default class Conv extends Component {
190186

191187
dismissDropDownMenu() {
192188
Animated.timing(this.state.y, {
193-
toValue: -200
189+
toValue: -600
194190
}).start(() => {
195191
this.setState({ showDropDownMenu: false});
196192
});
@@ -218,17 +214,18 @@ export default class Conv extends Component {
218214

219215
showAddFriendDialog() {
220216
this.dismissDropDownMenu();
221-
this.state.scaleAnimation.setValue(0);
222-
Animated.spring(this.state.scaleAnimation, {
223-
toValue: 1
217+
this.state.y.setValue(-600);
218+
this.state.scaleAnimation.setValue(1);
219+
Animated.spring(this.state.y, {
220+
toValue: 0
224221
}).start();
225222
this.setState({ showAddFriendDialog: true });
226223
}
227224

228225
dismissAddFriendDialog() {
229226
console.log('dismissing dialog');
230-
Animated.timing(this.state.scaleAnimation, {
231-
toValue: 0,
227+
Animated.timing(this.state.y, {
228+
toValue: -600,
232229
}).start(() => {
233230
this.setState({ showAddFriendDialog: false });
234231
});
@@ -263,6 +260,7 @@ export default class Conv extends Component {
263260
dataSource = { conversationReducer.dataSource }
264261
renderHeader = { this.renderHeader }
265262
renderRow = { this.renderRow }
263+
enableEmptySections = { true }
266264
keyboardDismissMode="on-drag"
267265
keyboardShouldPersistTaps={ true }
268266
showsVerticalScrollIndicator={ false }/>;
@@ -273,8 +271,14 @@ export default class Conv extends Component {
273271
style = { [styles.dropDownMenu, {transform: [{translateY: this.state.y}, {scale: this.state.scaleAnimation}]}] }
274272
visible = { this.state.showDropDownMenu }>
275273
<View style = { styles.dropDownMenuContent }>
276-
<Image style = { styles.menuBackground }
277-
source = { {uri: 'drop_down_menu_bg'}}>
274+
<View style = { styles.menuBackground }>
275+
<TouchableHighlight
276+
onPress = { this.dismissDropDownMenu }
277+
underlayColor = { '#346fc3' }
278+
style = { {position: 'absolute', top: 10, right: 10} }>
279+
<Image style = { {width: 25, height: 25,} }
280+
source = { {uri: 'del_btn'} } />
281+
</TouchableHighlight>
278282
<TouchableHighlight
279283
onPress = { this.createGroup }
280284
underlayColor = { '#346fc3' }
@@ -291,12 +295,12 @@ export default class Conv extends Component {
291295
添加朋友
292296
</Text>
293297
</TouchableHighlight>
294-
</Image>
298+
</View>
295299
</View>
296300
</Animated.Modal>
297301

298302
<Animated.Modal
299-
style = { [styles.addFriendDialog, {transform: [{scale: this.state.scaleAnimation}]}] }
303+
style = { [styles.addFriendDialog, {transform: [{translateY: this.state.y}, {scale: this.state.scaleAnimation}]}] }
300304
visible = { this.state.showAddFriendDialog }>
301305
<View style = { styles.container }>
302306
<Text style = { {fontSize: 18, marginTop: 15, color: '#008000', alignSelf: 'center'}}>
@@ -409,10 +413,11 @@ var styles = React.StyleSheet.create({
409413
},
410414
dropDownMenu: {
411415
borderRadius: 5,
412-
left: Dimensions.get('window').width - 105,
413-
top: 40,
414-
right: 0,
415-
bottom: Dimensions.get('window').height - 160,
416+
left: Dimensions.get('window').width / 3,
417+
top: Dimensions.get('window').height / 4,
418+
right: Dimensions.get('window').width / 4,
419+
bottom: Dimensions.get('window').height / 2,
420+
backgroundColor: '#3f80dc',
416421
},
417422
dropDownMenuContent: {
418423
flex: 1
@@ -423,7 +428,8 @@ var styles = React.StyleSheet.create({
423428
paddingBottom: 12,
424429
},
425430
menuItem0: {
426-
marginTop: 30,
431+
marginTop: 10,
432+
marginRight: 35,
427433
paddingLeft: 15,
428434
},
429435
menuItem1: {
@@ -432,10 +438,10 @@ var styles = React.StyleSheet.create({
432438
},
433439
addFriendDialog: {
434440
borderRadius: 10,
441+
left: Dimensions.get('window').width / 8,
435442
top: Dimensions.get('window').height / 4,
436443
right: Dimensions.get('window').width / 8,
437444
bottom: Dimensions.get('window').height / 3,
438-
left: Dimensions.get('window').width / 8,
439445
backgroundColor: '#ffffff',
440446
},
441447
bottomLeftBtn: {

react-native-android/containers/login_activity.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ export default class LoginActivity extends Component {
4242
console.log('username: ' + this.state.username);
4343
JMessageHelper.login(false, this.state.username, this.state.password, () => {
4444
console.log('Login success!');
45-
//相当于重新Start MainActivity,finish掉其他Activity
46-
this.props.navigator.immediatelyResetRouteStack([{name: 'mainActivity', component: MainActivity}]);
45+
//用一个新路由即MainActivity替换掉当前路由
46+
this.props.navigator.replace({name: 'mainActivity', component: MainActivity});
4747
});
4848
}
4949

@@ -105,6 +105,7 @@ export default class LoginActivity extends Component {
105105
placeholder = { '用户密码' }
106106
placeholderTextColor = { '#808080' }
107107
maxLength = { 128 }
108+
secureTextEntry = { true }
108109
onChangeText = { (text) => this.setState({password: text}) }/>
109110
</View>
110111
<View style = { styles.separator }/>

react-native-android/containers/main_activity.js

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -107,17 +107,18 @@ export default class MainActivity extends Component {
107107
var navigator = this.props.navigator;
108108
Orientation.lockToPortrait();
109109

110-
// BackAndroid.addEventListener('hardwareBackPress', () => {
111-
// if (navigator && navigator.getCurrentRoutes() > 0) {
112-
// navigator.pop();
113-
// return true;
114-
// }
115-
// return false;
116-
// });
110+
BackAndroid.addEventListener('hardwareBackPress', () => {
111+
console.log('MainActivity backPressed');
112+
if (navigator && navigator.getCurrentRoutes() > 0) {
113+
navigator.pop();
114+
return true;
115+
}
116+
return false;
117+
});
117118
}
118119

119120
componentWillUnmount() {
120-
// BackAndroid.removeEventListener('hardwareBackPress', this.hardwareBackPress);
121+
BackAndroid.removeEventListener('hardwareBackPress', this.hardwareBackPress);
121122
}
122123

123124
onSelectMenu(index) {

react-native-android/containers/re-login_activity.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ class ReloginActivity extends Component {
9494
placeholder = { '用户密码' }
9595
placeholderTextColor = { '#808080' }
9696
maxLength = { 128 }
97+
secureTextEntry = { true }
9798
onChangeText = { (text) => this.setState({password: text}) }/>
9899
</View>
99100
<View style = { styles.separator }/>

react-native-android/reducers/conversationReducer.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ export default function conversationList(state, action) {
5050
var convList = [...state.convList];
5151
convList.unshift(action.conversation);
5252
dataSource = state.dataSource.cloneWithRows(convList);
53+
console.log('add success convList: ' + convList.toString());
5354
return {
5455
...state,
5556
...action,

0 commit comments

Comments
 (0)