@@ -15,13 +15,122 @@ import {
1515import { ChatItem } from '../native' ;
1616
1717export default class App extends Component < { } > {
18+ constructor ( props ) {
19+ super ( props ) ;
20+
21+ this . state = {
22+ show : true ,
23+ messageList : [ ] ,
24+ } ;
25+ }
26+
27+ getRandomColor ( ) {
28+ var letters = '0123456789ABCDEF' ;
29+ var color = '#' ;
30+ for ( var i = 0 ; i < 6 ; i ++ ) {
31+ color += letters [ Math . floor ( Math . random ( ) * 16 ) ] ;
32+ }
33+ return color ;
34+ }
35+
36+ token ( ) {
37+ return ( parseInt ( Math . random ( ) * 10 % 6 ) ) ;
38+ }
39+
40+ photo ( size ) {
41+ return require ( './assets/chat-user.png' )
42+ }
43+
44+ random ( type ) {
45+ switch ( type ) {
46+ case 'message' :
47+ var type = this . token ( ) ;
48+ var statu = 'waiting' ;
49+ switch ( type ) {
50+ case 0 :
51+ type = 'photo' ;
52+ statu = 'sent' ;
53+ break ;
54+ case 1 :
55+ type = 'file' ;
56+ statu = 'sent' ;
57+ break ;
58+ case 2 :
59+ type = 'system' ;
60+ statu = 'received' ;
61+ break ;
62+ case 3 :
63+ type = 'location' ;
64+ break ;
65+ case 4 :
66+ type = 'spotify' ;
67+ break ;
68+ default :
69+ type = 'text' ;
70+ statu = 'read' ;
71+ break ;
72+ }
73+
74+ return {
75+ position : ( this . token ( ) >= 1 ? 'right' : 'left' ) ,
76+ forwarded : true ,
77+ type : type ,
78+ theme : 'white' ,
79+ view : 'list' ,
80+ title : 'consectetur adipisicing elit' ,
81+ titleColor : this . getRandomColor ( ) ,
82+ text : type === 'spotify' ? 'spotify:track:7wGoVu4Dady5GV0Sv4UIsx' : 'Ab beatae odit deleniti dolor numquam nisi, non laboriosam sequi' ,
83+ data : {
84+ uri : require ( './assets/chat-user.png' ) ,
85+ status : {
86+ click : false ,
87+ loading : 0 ,
88+ } ,
89+ width : 300 ,
90+ height : 300 ,
91+ latitude : '37.773972' ,
92+ longitude : '-122.431297' ,
93+ } ,
94+ statu : statu ,
95+ date : new Date ( ) ,
96+ dateString : new Date ( ) . toString ( ) ,
97+ avatar : require ( './assets/chat-user.png' ) ,
98+ } ;
99+ case 'chat' :
100+ return {
101+ id : String ( Math . random ( ) ) ,
102+ avatar : `data:image/png;base64,${ this . photo ( ) } ` ,
103+ avatarFlexible : true ,
104+ statusColor : 'lightgreen' ,
105+ alt : 'dolore voluptate facilis nobis officia commodi quia' ,
106+ title : 'dolore voluptate facilis nobis officia commodi quia' ,
107+ date : new Date ( ) ,
108+ subtitle : 'eligendi quaerat nam ipsam tempora.' ,
109+ unread : parseInt ( Math . random ( ) * 10 % 3 ) ,
110+ dateString : new Date ( ) . toString ( ) ,
111+ } ;
112+ }
113+ }
114+
18115 render ( ) {
116+ var arr = [ ] ;
117+ for ( var i = 0 ; i < 5 ; i ++ )
118+ arr . push ( i ) ;
119+
120+ var chatSource = arr . map ( x => this . random ( 'chat' ) ) ;
19121 return (
20- < View style = { { flex : 1 } } >
21- < ChatItem
22- title = 'React Chat Element'
23- subtitle = 'Hello there!'
24- avatar = { { uri : 'https://facebook.github.io/react/img/logo_og.png' } } />
122+ < View style = { { flex : 1 , marginTop : 10 } } >
123+ {
124+ chatSource . map ( ( x , i ) => (
125+ < ChatItem
126+ key = { i }
127+ title = { x . title }
128+ unread = { i || 1 }
129+ statusColor = 'lightgreen'
130+ subtitle = { x . subtitle }
131+ avatar = { require ( './assets/chat-user.png' ) } />
132+ ) )
133+ }
25134 </ View >
26135 ) ;
27136 }
0 commit comments