Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
apk
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
apk
Commits
358a067a
Commit
358a067a
authored
Jun 16, 2014
by
DrKLO
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Avoid uploading same file twice, bug fixes
parent
a87968ce
Changes
20
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
398 additions
and
231 deletions
+398
-231
build.gradle
TMessagesProj/build.gradle
+2
-2
ConnectionsManager.java
.../main/java/org/telegram/messenger/ConnectionsManager.java
+54
-31
ContactsController.java
.../main/java/org/telegram/messenger/ContactsController.java
+16
-0
FileLoader.java
...Proj/src/main/java/org/telegram/messenger/FileLoader.java
+8
-8
FileUploadOperation.java
...main/java/org/telegram/messenger/FileUploadOperation.java
+85
-49
MessagesController.java
.../main/java/org/telegram/messenger/MessagesController.java
+36
-41
MessagesStorage.java
...src/main/java/org/telegram/messenger/MessagesStorage.java
+78
-0
NativeLoader.java
...oj/src/main/java/org/telegram/messenger/NativeLoader.java
+34
-15
TLRPC.java
...sagesProj/src/main/java/org/telegram/messenger/TLRPC.java
+10
-8
TcpConnection.java
...j/src/main/java/org/telegram/messenger/TcpConnection.java
+2
-2
Utilities.java
...sProj/src/main/java/org/telegram/messenger/Utilities.java
+3
-0
ChatActivity.java
...sagesProj/src/main/java/org/telegram/ui/ChatActivity.java
+33
-50
ContactAddActivity.java
...roj/src/main/java/org/telegram/ui/ContactAddActivity.java
+1
-0
CountrySelectActivity.java
.../src/main/java/org/telegram/ui/CountrySelectActivity.java
+1
-1
DocumentSelectActivity.java
...src/main/java/org/telegram/ui/DocumentSelectActivity.java
+2
-2
LaunchActivity.java
...gesProj/src/main/java/org/telegram/ui/LaunchActivity.java
+2
-2
UserProfileActivity.java
...oj/src/main/java/org/telegram/ui/UserProfileActivity.java
+22
-12
ActionBarLayer.java
.../java/org/telegram/ui/Views/ActionBar/ActionBarLayer.java
+2
-2
AvatarUpdater.java
...oj/src/main/java/org/telegram/ui/Views/AvatarUpdater.java
+1
-1
updating_state_layout.xml
TMessagesProj/src/main/res/layout/updating_state_layout.xml
+6
-5
No files found.
TMessagesProj/build.gradle
View file @
358a067a
...
@@ -81,7 +81,7 @@ android {
...
@@ -81,7 +81,7 @@ android {
defaultConfig
{
defaultConfig
{
minSdkVersion
8
minSdkVersion
8
targetSdkVersion
19
targetSdkVersion
19
versionCode
25
7
versionCode
25
8
versionName
"1.5.
4
"
versionName
"1.5.
5
"
}
}
}
}
TMessagesProj/src/main/java/org/telegram/messenger/ConnectionsManager.java
View file @
358a067a
...
@@ -63,7 +63,8 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection.
...
@@ -63,7 +63,8 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection.
private
boolean
paused
=
false
;
private
boolean
paused
=
false
;
private
long
lastPingTime
=
System
.
currentTimeMillis
();
private
long
lastPingTime
=
System
.
currentTimeMillis
();
private
long
lastPushPingTime
=
System
.
currentTimeMillis
();
private
long
lastPushPingTime
=
0
;
private
boolean
sendingPushPing
=
false
;
private
int
nextSleepTimeout
=
30000
;
private
int
nextSleepTimeout
=
30000
;
private
long
nextPingId
=
0
;
private
long
nextPingId
=
0
;
...
@@ -88,7 +89,11 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection.
...
@@ -88,7 +89,11 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection.
Utilities
.
stageQueue
.
handler
.
removeCallbacks
(
stageRunnable
);
Utilities
.
stageQueue
.
handler
.
removeCallbacks
(
stageRunnable
);
t
=
System
.
currentTimeMillis
();
t
=
System
.
currentTimeMillis
();
if
(
datacenters
!=
null
)
{
if
(
datacenters
!=
null
)
{
if
(
lastPushPingTime
<
System
.
currentTimeMillis
()
-
29000
)
{
if
(
sendingPushPing
&&
lastPushPingTime
<
System
.
currentTimeMillis
()
-
30000
||
Math
.
abs
(
lastPushPingTime
-
System
.
currentTimeMillis
())
>
60000
*
4
)
{
lastPushPingTime
=
0
;
sendingPushPing
=
false
;
}
if
(
lastPushPingTime
<
System
.
currentTimeMillis
()
-
60000
*
3
)
{
lastPushPingTime
=
System
.
currentTimeMillis
();
lastPushPingTime
=
System
.
currentTimeMillis
();
Datacenter
datacenter
=
datacenterWithId
(
currentDatacenterId
);
Datacenter
datacenter
=
datacenterWithId
(
currentDatacenterId
);
if
(
datacenter
!=
null
)
{
if
(
datacenter
!=
null
)
{
...
@@ -1955,31 +1960,35 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection.
...
@@ -1955,31 +1960,35 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection.
if
(
UserConfig
.
isClientActivated
()
&&
!
UserConfig
.
registeredForInternalPush
&&
(
connection
.
transportRequestClass
&
RPCRequest
.
RPCRequestClassPush
)
!=
0
)
{
if
(
UserConfig
.
isClientActivated
()
&&
!
UserConfig
.
registeredForInternalPush
&&
(
connection
.
transportRequestClass
&
RPCRequest
.
RPCRequestClassPush
)
!=
0
)
{
registerForPush
();
registerForPush
();
}
}
TLRPC
.
TL_pong
pong
=
(
TLRPC
.
TL_pong
)
message
;
if
((
connection
.
transportRequestClass
&
RPCRequest
.
RPCRequestClassPush
)
==
0
)
{
long
pingId
=
pong
.
ping_id
;
TLRPC
.
TL_pong
pong
=
(
TLRPC
.
TL_pong
)
message
;
long
pingId
=
pong
.
ping_id
;
ArrayList
<
Long
>
itemsToDelete
=
new
ArrayList
<
Long
>();
ArrayList
<
Long
>
itemsToDelete
=
new
ArrayList
<
Long
>();
for
(
Long
pid
:
pingIdToDate
.
keySet
())
{
for
(
Long
pid
:
pingIdToDate
.
keySet
())
{
if
(
pid
==
pingId
)
{
if
(
pid
==
pingId
)
{
int
time
=
pingIdToDate
.
get
(
pid
);
int
time
=
pingIdToDate
.
get
(
pid
);
int
pingTime
=
(
int
)
(
System
.
currentTimeMillis
()
/
1000
)
-
time
;
int
pingTime
=
(
int
)
(
System
.
currentTimeMillis
()
/
1000
)
-
time
;
if
(
Math
.
abs
(
pingTime
)
<
10
)
{
if
(
Math
.
abs
(
pingTime
)
<
10
)
{
currentPingTime
=
(
pingTime
+
currentPingTime
)
/
2
;
currentPingTime
=
(
pingTime
+
currentPingTime
)
/
2
;
if
(
messageId
!=
0
)
{
if
(
messageId
!=
0
)
{
long
timeMessage
=
getTimeFromMsgId
(
messageId
);
long
timeMessage
=
getTimeFromMsgId
(
messageId
);
long
currentTime
=
System
.
currentTimeMillis
();
long
currentTime
=
System
.
currentTimeMillis
();
timeDifference
=
(
int
)((
timeMessage
-
currentTime
)
/
1000
-
currentPingTime
/
2.0
);
timeDifference
=
(
int
)
((
timeMessage
-
currentTime
)
/
1000
-
currentPingTime
/
2.0
);
}
}
}
itemsToDelete
.
add
(
pid
);
}
else
if
(
pid
<
pingId
)
{
itemsToDelete
.
add
(
pid
);
}
}
itemsToDelete
.
add
(
pid
);
}
else
if
(
pid
<
pingId
)
{
itemsToDelete
.
add
(
pid
);
}
}
}
for
(
Long
pid
:
itemsToDelete
)
{
for
(
Long
pid
:
itemsToDelete
)
{
pingIdToDate
.
remove
(
pid
);
pingIdToDate
.
remove
(
pid
);
}
}
else
{
sendingPushPing
=
false
;
}
}
}
else
if
(
message
instanceof
TLRPC
.
TL_futuresalts
)
{
}
else
if
(
message
instanceof
TLRPC
.
TL_futuresalts
)
{
TLRPC
.
TL_futuresalts
futureSalts
=
(
TLRPC
.
TL_futuresalts
)
message
;
TLRPC
.
TL_futuresalts
futureSalts
=
(
TLRPC
.
TL_futuresalts
)
message
;
...
@@ -2345,17 +2354,21 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection.
...
@@ -2345,17 +2354,21 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection.
TLRPC
.
TL_ping_delay_disconnect
ping
=
new
TLRPC
.
TL_ping_delay_disconnect
();
TLRPC
.
TL_ping_delay_disconnect
ping
=
new
TLRPC
.
TL_ping_delay_disconnect
();
ping
.
ping_id
=
nextPingId
++;
ping
.
ping_id
=
nextPingId
++;
ping
.
disconnect_delay
=
35
;
if
((
connection
.
transportRequestClass
&
RPCRequest
.
RPCRequestClassPush
)
!=
0
)
{
pingIdToDate
.
put
(
ping
.
ping_id
,
(
int
)(
System
.
currentTimeMillis
()
/
1000
));
ping
.
disconnect_delay
=
60
*
7
;
if
(
pingIdToDate
.
size
()
>
20
)
{
}
else
{
ArrayList
<
Long
>
itemsToDelete
=
new
ArrayList
<
Long
>();
ping
.
disconnect_delay
=
35
;
for
(
Long
pid
:
pingIdToDate
.
keySet
())
{
pingIdToDate
.
put
(
ping
.
ping_id
,
(
int
)
(
System
.
currentTimeMillis
()
/
1000
));
if
(
pid
<
nextPingId
-
10
)
{
if
(
pingIdToDate
.
size
()
>
20
)
{
itemsToDelete
.
add
(
pid
);
ArrayList
<
Long
>
itemsToDelete
=
new
ArrayList
<
Long
>();
for
(
Long
pid
:
pingIdToDate
.
keySet
())
{
if
(
pid
<
nextPingId
-
10
)
{
itemsToDelete
.
add
(
pid
);
}
}
for
(
Long
pid
:
itemsToDelete
)
{
pingIdToDate
.
remove
(
pid
);
}
}
}
for
(
Long
pid
:
itemsToDelete
)
{
pingIdToDate
.
remove
(
pid
);
}
}
}
}
...
@@ -2377,6 +2390,9 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection.
...
@@ -2377,6 +2390,9 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection.
if
(
connection
!=
null
&&
(
push
||
!
push
&&
connection
.
channelToken
!=
0
))
{
if
(
connection
!=
null
&&
(
push
||
!
push
&&
connection
.
channelToken
!=
0
))
{
ByteBufferDesc
transportData
=
generatePingData
(
connection
);
ByteBufferDesc
transportData
=
generatePingData
(
connection
);
if
(
transportData
!=
null
)
{
if
(
transportData
!=
null
)
{
if
(
push
)
{
sendingPushPing
=
true
;
}
connection
.
sendData
(
null
,
transportData
,
false
);
connection
.
sendData
(
null
,
transportData
,
false
);
}
}
}
}
...
@@ -2558,6 +2574,9 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection.
...
@@ -2558,6 +2574,9 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection.
NotificationCenter
.
getInstance
().
postNotificationName
(
703
,
stateCopy
);
NotificationCenter
.
getInstance
().
postNotificationName
(
703
,
stateCopy
);
}
}
});
});
}
else
if
((
connection
.
transportRequestClass
&
RPCRequest
.
RPCRequestClassPush
)
!=
0
)
{
sendingPushPing
=
false
;
lastPushPingTime
=
System
.
currentTimeMillis
()
-
60000
*
3
+
5000
;
}
}
}
}
...
@@ -2566,6 +2585,10 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection.
...
@@ -2566,6 +2585,10 @@ public class ConnectionsManager implements Action.ActionDelegate, TcpConnection.
Datacenter
datacenter
=
datacenterWithId
(
connection
.
getDatacenterId
());
Datacenter
datacenter
=
datacenterWithId
(
connection
.
getDatacenterId
());
if
(
datacenter
.
authKey
!=
null
)
{
if
(
datacenter
.
authKey
!=
null
)
{
processRequestQueue
(
connection
.
transportRequestClass
,
connection
.
getDatacenterId
());
processRequestQueue
(
connection
.
transportRequestClass
,
connection
.
getDatacenterId
());
if
((
connection
.
transportRequestClass
&
RPCRequest
.
RPCRequestClassPush
)
!=
0
)
{
sendingPushPing
=
false
;
lastPushPingTime
=
System
.
currentTimeMillis
()
-
60000
*
3
+
10000
;
}
}
}
}
}
...
...
TMessagesProj/src/main/java/org/telegram/messenger/ContactsController.java
View file @
358a067a
...
@@ -181,6 +181,10 @@ public class ContactsController {
...
@@ -181,6 +181,10 @@ public class ContactsController {
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
FileLog
.
e
(
"tmessages"
,
e
);
FileLog
.
e
(
"tmessages"
,
e
);
}
finally
{
if
(
pCur
!=
null
)
{
pCur
.
close
();
}
}
}
try
{
try
{
pCur
=
cr
.
query
(
ContactsContract
.
CommonDataKinds
.
Phone
.
CONTENT_URI
,
new
String
[]{
ContactsContract
.
CommonDataKinds
.
Phone
.
_COUNT
},
null
,
null
,
null
);
pCur
=
cr
.
query
(
ContactsContract
.
CommonDataKinds
.
Phone
.
CONTENT_URI
,
new
String
[]{
ContactsContract
.
CommonDataKinds
.
Phone
.
_COUNT
},
null
,
null
,
null
);
...
@@ -195,6 +199,10 @@ public class ContactsController {
...
@@ -195,6 +199,10 @@ public class ContactsController {
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
FileLog
.
e
(
"tmessages"
,
e
);
FileLog
.
e
(
"tmessages"
,
e
);
}
finally
{
if
(
pCur
!=
null
)
{
pCur
.
close
();
}
}
}
try
{
try
{
pCur
=
cr
.
query
(
ContactsContract
.
Data
.
CONTENT_URI
,
new
String
[]{
ContactsContract
.
Data
.
_COUNT
},
ContactsContract
.
Data
.
MIMETYPE
+
" = '"
+
ContactsContract
.
CommonDataKinds
.
StructuredName
.
CONTENT_ITEM_TYPE
+
"'"
,
null
,
null
);
pCur
=
cr
.
query
(
ContactsContract
.
Data
.
CONTENT_URI
,
new
String
[]{
ContactsContract
.
Data
.
_COUNT
},
ContactsContract
.
Data
.
MIMETYPE
+
" = '"
+
ContactsContract
.
CommonDataKinds
.
StructuredName
.
CONTENT_ITEM_TYPE
+
"'"
,
null
,
null
);
...
@@ -209,6 +217,10 @@ public class ContactsController {
...
@@ -209,6 +217,10 @@ public class ContactsController {
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
FileLog
.
e
(
"tmessages"
,
e
);
FileLog
.
e
(
"tmessages"
,
e
);
}
finally
{
if
(
pCur
!=
null
)
{
pCur
.
close
();
}
}
}
try
{
try
{
pCur
=
cr
.
query
(
ContactsContract
.
Data
.
CONTENT_URI
,
new
String
[]{
ContactsContract
.
Data
.
_ID
},
ContactsContract
.
Data
.
MIMETYPE
+
" = '"
+
ContactsContract
.
CommonDataKinds
.
StructuredName
.
CONTENT_ITEM_TYPE
+
"'"
,
null
,
ContactsContract
.
Data
.
_ID
+
" desc LIMIT 1"
);
pCur
=
cr
.
query
(
ContactsContract
.
Data
.
CONTENT_URI
,
new
String
[]{
ContactsContract
.
Data
.
_ID
},
ContactsContract
.
Data
.
MIMETYPE
+
" = '"
+
ContactsContract
.
CommonDataKinds
.
StructuredName
.
CONTENT_ITEM_TYPE
+
"'"
,
null
,
ContactsContract
.
Data
.
_ID
+
" desc LIMIT 1"
);
...
@@ -223,6 +235,10 @@ public class ContactsController {
...
@@ -223,6 +235,10 @@ public class ContactsController {
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
FileLog
.
e
(
"tmessages"
,
e
);
FileLog
.
e
(
"tmessages"
,
e
);
}
finally
{
if
(
pCur
!=
null
)
{
pCur
.
close
();
}
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
FileLog
.
e
(
"tmessages"
,
e
);
FileLog
.
e
(
"tmessages"
,
e
);
...
...
TMessagesProj/src/main/java/org/telegram/messenger/FileLoader.java
View file @
358a067a
...
@@ -337,11 +337,11 @@ public class FileLoader {
...
@@ -337,11 +337,11 @@ public class FileLoader {
return
memCache
.
get
(
key
)
!=
null
;
return
memCache
.
get
(
key
)
!=
null
;
}
}
public
void
uploadFile
(
final
String
location
,
final
byte
[]
key
,
final
byte
[]
iv
)
{
public
void
uploadFile
(
final
String
location
,
final
String
originalLocation
,
final
boolean
encrypted
)
{
fileLoaderQueue
.
postRunnable
(
new
Runnable
()
{
fileLoaderQueue
.
postRunnable
(
new
Runnable
()
{
@Override
@Override
public
void
run
()
{
public
void
run
()
{
if
(
key
!=
null
)
{
if
(
encrypted
)
{
if
(
uploadOperationPathsEnc
.
containsKey
(
location
))
{
if
(
uploadOperationPathsEnc
.
containsKey
(
location
))
{
return
;
return
;
}
}
...
@@ -350,8 +350,8 @@ public class FileLoader {
...
@@ -350,8 +350,8 @@ public class FileLoader {
return
;
return
;
}
}
}
}
FileUploadOperation
operation
=
new
FileUploadOperation
(
location
,
key
,
iv
);
FileUploadOperation
operation
=
new
FileUploadOperation
(
location
,
originalLocation
,
encrypted
);
if
(
key
!=
null
)
{
if
(
encrypted
)
{
uploadOperationPathsEnc
.
put
(
location
,
operation
);
uploadOperationPathsEnc
.
put
(
location
,
operation
);
}
else
{
}
else
{
uploadOperationPaths
.
put
(
location
,
operation
);
uploadOperationPaths
.
put
(
location
,
operation
);
...
@@ -369,7 +369,7 @@ public class FileLoader {
...
@@ -369,7 +369,7 @@ public class FileLoader {
fileProgresses
.
remove
(
location
);
fileProgresses
.
remove
(
location
);
}
}
});
});
if
(
key
!=
null
)
{
if
(
encrypted
)
{
uploadOperationPathsEnc
.
remove
(
location
);
uploadOperationPathsEnc
.
remove
(
location
);
}
else
{
}
else
{
uploadOperationPaths
.
remove
(
location
);
uploadOperationPaths
.
remove
(
location
);
...
@@ -396,11 +396,11 @@ public class FileLoader {
...
@@ -396,11 +396,11 @@ public class FileLoader {
public
void
run
()
{
public
void
run
()
{
fileProgresses
.
remove
(
location
);
fileProgresses
.
remove
(
location
);
if
(
operation
.
state
!=
2
)
{
if
(
operation
.
state
!=
2
)
{
NotificationCenter
.
getInstance
().
postNotificationName
(
FileDidFailUpload
,
location
,
key
!=
null
);
NotificationCenter
.
getInstance
().
postNotificationName
(
FileDidFailUpload
,
location
,
encrypted
);
}
}
}
}
});
});
if
(
key
!=
null
)
{
if
(
encrypted
)
{
uploadOperationPathsEnc
.
remove
(
location
);
uploadOperationPathsEnc
.
remove
(
location
);
}
else
{
}
else
{
uploadOperationPaths
.
remove
(
location
);
uploadOperationPaths
.
remove
(
location
);
...
@@ -428,7 +428,7 @@ public class FileLoader {
...
@@ -428,7 +428,7 @@ public class FileLoader {
Utilities
.
RunOnUIThread
(
new
Runnable
()
{
Utilities
.
RunOnUIThread
(
new
Runnable
()
{
@Override
@Override
public
void
run
()
{
public
void
run
()
{
NotificationCenter
.
getInstance
().
postNotificationName
(
FileUploadProgressChanged
,
location
,
progress
,
key
!=
null
);
NotificationCenter
.
getInstance
().
postNotificationName
(
FileUploadProgressChanged
,
location
,
progress
,
encrypted
);
}
}
});
});
}
}
...
...
TMessagesProj/src/main/java/org/telegram/messenger/FileUploadOperation.java
View file @
358a067a
...
@@ -13,11 +13,14 @@ import java.io.FileInputStream;
...
@@ -13,11 +13,14 @@ import java.io.FileInputStream;
import
java.math.BigInteger
;
import
java.math.BigInteger
;
import
java.security.MessageDigest
;
import
java.security.MessageDigest
;
import
java.security.NoSuchAlgorithmException
;
import
java.security.NoSuchAlgorithmException
;
import
java.util.ArrayList
;
import
java.util.Locale
;
import
java.util.Locale
;
import
java.util.concurrent.Semaphore
;
public
class
FileUploadOperation
{
public
class
FileUploadOperation
{
private
int
uploadChunkSize
=
1024
*
32
;
private
int
uploadChunkSize
=
1024
*
32
;
private
String
uploadingFilePath
;
private
String
uploadingFilePath
;
private
String
originalPath
;
public
int
state
=
0
;
public
int
state
=
0
;
private
byte
[]
readBuffer
;
private
byte
[]
readBuffer
;
public
FileUploadOperationDelegate
delegate
;
public
FileUploadOperationDelegate
delegate
;
...
@@ -30,6 +33,7 @@ public class FileUploadOperation {
...
@@ -30,6 +33,7 @@ public class FileUploadOperation {
private
long
currentUploaded
=
0
;
private
long
currentUploaded
=
0
;
private
byte
[]
key
;
private
byte
[]
key
;
private
byte
[]
iv
;
private
byte
[]
iv
;
private
byte
[]
ivChange
;
private
int
fingerprint
;
private
int
fingerprint
;
private
boolean
isBigFile
=
false
;
private
boolean
isBigFile
=
false
;
FileInputStream
stream
;
FileInputStream
stream
;
...
@@ -41,12 +45,16 @@ public class FileUploadOperation {
...
@@ -41,12 +45,16 @@ public class FileUploadOperation {
public
abstract
void
didChangedUploadProgress
(
FileUploadOperation
operation
,
float
progress
);
public
abstract
void
didChangedUploadProgress
(
FileUploadOperation
operation
,
float
progress
);
}
}
public
FileUploadOperation
(
String
location
,
byte
[]
keyarr
,
byte
[]
ivarr
)
{
public
FileUploadOperation
(
String
location
,
String
originalLocaltion
,
boolean
encrypted
)
{
uploadingFilePath
=
location
;
uploadingFilePath
=
location
;
if
(
ivarr
!=
null
&&
keyarr
!=
null
)
{
originalPath
=
originalLocaltion
;
if
(
encrypted
)
{
iv
=
new
byte
[
32
];
iv
=
new
byte
[
32
];
key
=
keyarr
;
key
=
new
byte
[
32
];
System
.
arraycopy
(
ivarr
,
0
,
iv
,
0
,
32
);
ivChange
=
new
byte
[
32
];
Utilities
.
random
.
nextBytes
(
iv
);
Utilities
.
random
.
nextBytes
(
key
);
System
.
arraycopy
(
iv
,
0
,
ivChange
,
0
,
32
);
try
{
try
{
java
.
security
.
MessageDigest
md
=
java
.
security
.
MessageDigest
.
getInstance
(
"MD5"
);
java
.
security
.
MessageDigest
md
=
java
.
security
.
MessageDigest
.
getInstance
(
"MD5"
);
byte
[]
arr
=
new
byte
[
64
];
byte
[]
arr
=
new
byte
[
64
];
...
@@ -98,6 +106,26 @@ public class FileUploadOperation {
...
@@ -98,6 +106,26 @@ public class FileUploadOperation {
try
{
try
{
if
(
stream
==
null
)
{
if
(
stream
==
null
)
{
if
(
originalPath
!=
null
)
{
Semaphore
semaphore
=
new
Semaphore
(
0
);
ArrayList
<
TLObject
>
result
=
new
ArrayList
<
TLObject
>();
String
path
=
originalPath
;
if
(
key
!=
null
)
{
path
+=
"e"
;
}
MessagesStorage
.
getInstance
().
getSentFile
(
path
,
semaphore
,
result
);
semaphore
.
acquire
();
if
(!
result
.
isEmpty
())
{
TLObject
object
=
result
.
get
(
0
);
if
(
object
instanceof
TLRPC
.
InputFile
)
{
delegate
.
didFinishUploadingFile
(
FileUploadOperation
.
this
,
(
TLRPC
.
InputFile
)
object
,
null
);
return
;
}
else
if
(
object
instanceof
TLRPC
.
InputEncryptedFile
)
{
delegate
.
didFinishUploadingFile
(
FileUploadOperation
.
this
,
null
,
(
TLRPC
.
InputEncryptedFile
)
object
);
return
;
}
}
}
File
cacheFile
=
new
File
(
uploadingFilePath
);
File
cacheFile
=
new
File
(
uploadingFilePath
);
stream
=
new
FileInputStream
(
cacheFile
);
stream
=
new
FileInputStream
(
cacheFile
);
totalFileSize
=
cacheFile
.
length
();
totalFileSize
=
cacheFile
.
length
();
...
@@ -106,7 +134,7 @@ public class FileUploadOperation {
...
@@ -106,7 +134,7 @@ public class FileUploadOperation {
isBigFile
=
true
;
isBigFile
=
true
;
}
}
uploadChunkSize
=
(
int
)
Math
.
max
(
32
,
Math
.
ceil
(
totalFileSize
/
(
1024.0f
*
3000
)));
uploadChunkSize
=
(
int
)
Math
.
max
(
32
,
Math
.
ceil
(
totalFileSize
/
(
1024.0f
*
3000
)));
if
(
1024
%
uploadChunkSize
!=
0
)
{
if
(
1024
%
uploadChunkSize
!=
0
)
{
int
chunkSize
=
64
;
int
chunkSize
=
64
;
while
(
uploadChunkSize
>
chunkSize
)
{
while
(
uploadChunkSize
>
chunkSize
)
{
...
@@ -116,7 +144,7 @@ public class FileUploadOperation {
...
@@ -116,7 +144,7 @@ public class FileUploadOperation {
}
}
uploadChunkSize
*=
1024
;
uploadChunkSize
*=
1024
;
totalPartsCount
=
(
int
)
Math
.
ceil
((
float
)
totalFileSize
/
(
float
)
uploadChunkSize
);
totalPartsCount
=
(
int
)
Math
.
ceil
((
float
)
totalFileSize
/
(
float
)
uploadChunkSize
);
readBuffer
=
new
byte
[
uploadChunkSize
];
readBuffer
=
new
byte
[
uploadChunkSize
];
}
}
...
@@ -134,7 +162,7 @@ public class FileUploadOperation {
...
@@ -134,7 +162,7 @@ public class FileUploadOperation {
for
(
int
a
=
0
;
a
<
toAdd
;
a
++)
{
for
(
int
a
=
0
;
a
<
toAdd
;
a
++)
{
sendBuffer
.
writeByte
(
0
);
sendBuffer
.
writeByte
(
0
);
}
}
Utilities
.
aesIgeEncryption2
(
sendBuffer
.
buffer
,
key
,
iv
,
true
,
true
,
readed
+
toAdd
);
Utilities
.
aesIgeEncryption2
(
sendBuffer
.
buffer
,
key
,
iv
Change
,
true
,
true
,
readed
+
toAdd
);
}
}
sendBuffer
.
rewind
();
sendBuffer
.
rewind
();
if
(!
isBigFile
)
{
if
(!
isBigFile
)
{
...
@@ -161,55 +189,63 @@ public class FileUploadOperation {
...
@@ -161,55 +189,63 @@ public class FileUploadOperation {
return
;
return
;
}
}
requestToken
=
ConnectionsManager
.
getInstance
().
performRpc
(
finalRequest
,
new
RPCRequest
.
RPCRequestDelegate
()
{
requestToken
=
ConnectionsManager
.
getInstance
().
performRpc
(
finalRequest
,
new
RPCRequest
.
RPCRequestDelegate
()
{
@Override
@Override
public
void
run
(
TLObject
response
,
TLRPC
.
TL_error
error
)
{
public
void
run
(
TLObject
response
,
TLRPC
.
TL_error
error
)
{
requestToken
=
0
;
requestToken
=
0
;
if
(
error
==
null
)
{
if
(
error
==
null
)
{
if
(
response
instanceof
TLRPC
.
TL_boolTrue
)
{
if
(
response
instanceof
TLRPC
.
TL_boolTrue
)
{
currentPartNum
++;
currentPartNum
++;
delegate
.
didChangedUploadProgress
(
FileUploadOperation
.
this
,
(
float
)
currentUploaded
/
(
float
)
totalFileSize
);
delegate
.
didChangedUploadProgress
(
FileUploadOperation
.
this
,
(
float
)
currentUploaded
/
(
float
)
totalFileSize
);
if
(
isLastPart
)
{
if
(
isLastPart
)
{
state
=
3
;
state
=
3
;
if
(
key
==
null
)
{
if
(
key
==
null
)
{
TLRPC
.
InputFile
result
;
TLRPC
.
InputFile
result
;
if
(
isBigFile
)
{
if
(
isBigFile
)
{
result
=
new
TLRPC
.
TL_inputFileBig
();
result
=
new
TLRPC
.
TL_inputFileBig
();
}
else
{
result
=
new
TLRPC
.
TL_inputFile
();
result
.
md5_checksum
=
String
.
format
(
Locale
.
US
,
"%32s"
,
new
BigInteger
(
1
,
mdEnc
.
digest
()).
toString
(
16
)).
replace
(
' '
,
'0'
);
}
result
.
parts
=
currentPartNum
;
result
.
id
=
currentFileId
;
result
.
name
=
uploadingFilePath
.
substring
(
uploadingFilePath
.
lastIndexOf
(
"/"
)
+
1
);
delegate
.
didFinishUploadingFile
(
FileUploadOperation
.
this
,
result
,
null
);
}
else
{
TLRPC
.
InputEncryptedFile
result
;
if
(
isBigFile
)
{
result
=
new
TLRPC
.
TL_inputEncryptedFileBigUploaded
();
}
else
{
result
=
new
TLRPC
.
TL_inputEncryptedFileUploaded
();
result
.
md5_checksum
=
String
.
format
(
Locale
.
US
,
"%32s"
,
new
BigInteger
(
1
,
mdEnc
.
digest
()).
toString
(
16
)).
replace
(
' '
,
'0'
);
}
result
.
parts
=
currentPartNum
;
result
.
id
=
currentFileId
;
result
.
key_fingerprint
=
fingerprint
;
delegate
.
didFinishUploadingFile
(
FileUploadOperation
.
this
,
null
,
result
);
}
}
else
{
}
else
{
startUploadRequest
();
result
=
new
TLRPC
.
TL_inputFile
();
result
.
md5_checksum
=
String
.
format
(
Locale
.
US
,
"%32s"
,
new
BigInteger
(
1
,
mdEnc
.
digest
()).
toString
(
16
)).
replace
(
' '
,
'0'
);
}
result
.
parts
=
currentPartNum
;
result
.
id
=
currentFileId
;
result
.
name
=
uploadingFilePath
.
substring
(
uploadingFilePath
.
lastIndexOf
(
"/"
)
+
1
);
delegate
.
didFinishUploadingFile
(
FileUploadOperation
.
this
,
result
,
null
);
if
(
originalPath
!=
null
)
{
MessagesStorage
.
getInstance
().
putSentFile
(
originalPath
,
result
,
null
,
null
);
}
}
}
else
{
}
else
{
delegate
.
didFailedUploadingFile
(
FileUploadOperation
.
this
);
TLRPC
.
InputEncryptedFile
result
;
if
(
isBigFile
)
{
result
=
new
TLRPC
.
TL_inputEncryptedFileBigUploaded
();
}
else
{
result
=
new
TLRPC
.
TL_inputEncryptedFileUploaded
();
result
.
md5_checksum
=
String
.
format
(
Locale
.
US
,
"%32s"
,
new
BigInteger
(
1
,
mdEnc
.
digest
()).
toString
(
16
)).
replace
(
' '
,
'0'
);
}
result
.
parts
=
currentPartNum
;
result
.
id
=
currentFileId
;
result
.
key_fingerprint
=
fingerprint
;
result
.
iv
=
iv
;
result
.
key
=
key
;
delegate
.
didFinishUploadingFile
(
FileUploadOperation
.
this
,
null
,
result
);
if
(
originalPath
!=
null
)
{
MessagesStorage
.
getInstance
().
putSentFile
(
originalPath
+
"e"
,
result
,
key
,
iv
);
}
}
}
}
else
{
}
else
{
delegate
.
didFailedUploadingFile
(
FileUploadOperation
.
this
);
startUploadRequest
(
);
}
}
}
else
{
delegate
.
didFailedUploadingFile
(
FileUploadOperation
.
this
);
}
}
},
new
RPCRequest
.
RPCProgressDelegate
()
{
}
else
{
@Override
delegate
.
didFailedUploadingFile
(
FileUploadOperation
.
this
);
public
void
progress
(
int
length
,
int
progress
)
{
}
}
},
new
RPCRequest
.
RPCProgressDelegate
()
{
@Override
public
void
progress
(
int
length
,
int
progress
)
{
}
}
},
null
,
true
,
RPCRequest
.
RPCRequestClassUploadMedia
,
ConnectionsManager
.
DEFAULT_DATACENTER_ID
);
},
null
,
true
,
RPCRequest
.
RPCRequestClassUploadMedia
,
ConnectionsManager
.
DEFAULT_DATACENTER_ID
);
}
}
}
}
TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java
View file @
358a067a
...
@@ -127,6 +127,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
...
@@ -127,6 +127,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
public
TLRPC
.
TL_messages_sendMedia
sendRequest
;
public
TLRPC
.
TL_messages_sendMedia
sendRequest
;
public
TLRPC
.
TL_decryptedMessage
sendEncryptedRequest
;
public
TLRPC
.
TL_decryptedMessage
sendEncryptedRequest
;
public
int
type
;
public
int
type
;
public
String
originalPath
;
public
TLRPC
.
FileLocation
location
;
public
TLRPC
.
FileLocation
location
;
public
TLRPC
.
TL_video
videoLocation
;
public
TLRPC
.
TL_video
videoLocation
;
public
TLRPC
.
TL_audio
audioLocation
;
public
TLRPC
.
TL_audio
audioLocation
;
...
@@ -587,7 +588,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
...
@@ -587,7 +588,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
public
void
uploadAndApplyUserAvatar
(
TLRPC
.
PhotoSize
bigPhoto
)
{
public
void
uploadAndApplyUserAvatar
(
TLRPC
.
PhotoSize
bigPhoto
)
{
if
(
bigPhoto
!=
null
)
{
if
(
bigPhoto
!=
null
)
{
uploadingAvatar
=
Utilities
.
getCacheDir
()
+
"/"
+
bigPhoto
.
location
.
volume_id
+
"_"
+
bigPhoto
.
location
.
local_id
+
".jpg"
;
uploadingAvatar
=
Utilities
.
getCacheDir
()
+
"/"
+
bigPhoto
.
location
.
volume_id
+
"_"
+
bigPhoto
.
location
.
local_id
+
".jpg"
;
FileLoader
.
getInstance
().
uploadFile
(
uploadingAvatar
,
null
,
null
);
FileLoader
.
getInstance
().
uploadFile
(
uploadingAvatar
,
null
,
false
);
}
}
}
}
...
@@ -1546,39 +1547,39 @@ public class MessagesController implements NotificationCenter.NotificationCenter
...
@@ -1546,39 +1547,39 @@ public class MessagesController implements NotificationCenter.NotificationCenter
}
}
public
void
sendMessage
(
TLRPC
.
User
user
,
long
peer
)
{
public
void
sendMessage
(
TLRPC
.
User
user
,
long
peer
)
{
sendMessage
(
null
,
0
,
0
,
null
,
null
,
null
,
null
,
user
,
null
,
null
,
peer
);
sendMessage
(
null
,
0
,
0
,
null
,
null
,
null
,
null
,
user
,
null
,
null
,
null
,
peer
);
}
}
public
void
sendMessage
(
MessageObject
message
,
long
peer
)
{
public
void
sendMessage
(
MessageObject
message
,
long
peer
)
{
sendMessage
(
null
,
0
,
0
,
null
,
null
,
message
,
null
,
null
,
null
,
null
,
peer
);
sendMessage
(
null
,
0
,
0
,
null
,
null
,
message
,
null
,
null
,
null
,
null
,
null
,
peer
);
}
}
public
void
sendMessage
(
TLRPC
.
TL_document
document
,
long
peer
)
{
public
void
sendMessage
(
TLRPC
.
TL_document
document
,
String
originalPath
,
long
peer
)
{
sendMessage
(
null
,
0
,
0
,
null
,
null
,
null
,
null
,
null
,
document
,
null
,
peer
);
sendMessage
(
null
,
0
,
0
,
null
,
null
,
null
,
null
,
null
,
document
,
null
,
originalPath
,
peer
);
}
}
public
void
sendMessage
(
String
message
,
long
peer
)
{
public
void
sendMessage
(
String
message
,
long
peer
)
{
sendMessage
(
message
,
0
,
0
,
null
,
null
,
null
,
null
,
null
,
null
,
null
,
peer
);
sendMessage
(
message
,
0
,
0
,
null
,
null
,
null
,
null
,
null
,
null
,
null
,
null
,
peer
);
}
}
public
void
sendMessage
(
TLRPC
.
FileLocation
location
,
long
peer
)
{
public
void
sendMessage
(
TLRPC
.
FileLocation
location
,
long
peer
)
{
sendMessage
(
null
,
0
,
0
,
null
,
null
,
null
,
location
,
null
,
null
,
null
,
peer
);
sendMessage
(
null
,
0
,
0
,
null
,
null
,
null
,
location
,
null
,
null
,
null
,
null
,
peer
);
}
}
public
void
sendMessage
(
double
lat
,
double
lon
,
long
peer
)
{
public
void
sendMessage
(
double
lat
,
double
lon
,
long
peer
)
{
sendMessage
(
null
,
lat
,
lon
,
null
,
null
,
null
,
null
,
null
,
null
,
null
,
peer
);
sendMessage
(
null
,
lat
,
lon
,
null
,
null
,
null
,
null
,
null
,
null
,
null
,
null
,
peer
);
}
}
public
void
sendMessage
(
TLRPC
.
TL_photo
photo
,
long
peer
)
{
public
void
sendMessage
(
TLRPC
.
TL_photo
photo
,
String
originalPath
,
long
peer
)
{
sendMessage
(
null
,
0
,
0
,
photo
,
null
,
null
,
null
,
null
,
null
,
null
,
peer
);
sendMessage
(
null
,
0
,
0
,
photo
,
null
,
null
,
null
,
null
,
null
,
null
,
originalPath
,
peer
);
}
}
public
void
sendMessage
(
TLRPC
.
TL_video
video
,
long
peer
)
{
public
void
sendMessage
(
TLRPC
.
TL_video
video
,
String
originalPath
,
long
peer
)
{
sendMessage
(
null
,
0
,
0
,
null
,
video
,
null
,
null
,
null
,
null
,
null
,
peer
);
sendMessage
(
null
,
0
,
0
,
null
,
video
,
null
,
null
,
null
,
null
,
null
,
originalPath
,
peer
);
}
}
public
void
sendMessage
(
TLRPC
.
TL_audio
audio
,
long
peer
)
{
public
void
sendMessage
(
TLRPC
.
TL_audio
audio
,
long
peer
)
{
sendMessage
(
null
,
0
,
0
,
null
,
null
,
null
,
null
,
null
,
null
,
audio
,
peer
);
sendMessage
(
null
,
0
,
0
,
null
,
null
,
null
,
null
,
null
,
null
,
audio
,
null
,
peer
);
}
}
private
void
processPendingEncMessages
()
{
private
void
processPendingEncMessages
()
{
...
@@ -1708,7 +1709,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
...
@@ -1708,7 +1709,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
performSendEncryptedRequest
(
reqSend
,
newMsgObj
,
encryptedChat
,
null
);
performSendEncryptedRequest
(
reqSend
,
newMsgObj
,
encryptedChat
,
null
);
}
}
private
void
sendMessage
(
String
message
,
double
lat
,
double
lon
,
TLRPC
.
TL_photo
photo
,
TLRPC
.
TL_video
video
,
MessageObject
msgObj
,
TLRPC
.
FileLocation
location
,
TLRPC
.
User
user
,
TLRPC
.
TL_document
document
,
TLRPC
.
TL_audio
audio
,
long
peer
)
{
private
void
sendMessage
(
String
message
,
double
lat
,
double
lon
,
TLRPC
.
TL_photo
photo
,
TLRPC
.
TL_video
video
,
MessageObject
msgObj
,
TLRPC
.
FileLocation
location
,
TLRPC
.
User
user
,
TLRPC
.
TL_document
document
,
TLRPC
.
TL_audio
audio
,
String
originalPath
,
long
peer
)
{
TLRPC
.
Message
newMsg
=
null
;
TLRPC
.
Message
newMsg
=
null
;
int
type
=
-
1
;
int
type
=
-
1
;
if
(
message
!=
null
)
{
if
(
message
!=
null
)
{
...
@@ -1731,7 +1732,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
...
@@ -1731,7 +1732,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
type
=
2
;
type
=
2
;
newMsg
.
message
=
"-1"
;
newMsg
.
message
=
"-1"
;
TLRPC
.
FileLocation
location1
=
photo
.
sizes
.
get
(
photo
.
sizes
.
size
()
-
1
).
location
;
TLRPC
.
FileLocation
location1
=
photo
.
sizes
.
get
(
photo
.
sizes
.
size
()
-
1
).
location
;
newMsg
.
attachPath
=
Utilities
.
getCacheDir
()
+
"/"
+
location1
.
volume_id
+
"_"
+
location1
.
local_id
+
".jpg"
;
newMsg
.
attachPath
=
originalPath
;
}
else
if
(
video
!=
null
)
{
}
else
if
(
video
!=
null
)
{
newMsg
=
new
TLRPC
.
TL_message
();
newMsg
=
new
TLRPC
.
TL_message
();
newMsg
.
media
=
new
TLRPC
.
TL_messageMediaVideo
();
newMsg
.
media
=
new
TLRPC
.
TL_messageMediaVideo
();
...
@@ -1882,6 +1883,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
...
@@ -1882,6 +1883,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
}
else
if
(
type
==
2
)
{
}
else
if
(
type
==
2
)
{
reqSend
.
media
=
new
TLRPC
.
TL_inputMediaUploadedPhoto
();
reqSend
.
media
=
new
TLRPC
.
TL_inputMediaUploadedPhoto
();
DelayedMessage
delayedMessage
=
new
DelayedMessage
();
DelayedMessage
delayedMessage
=
new
DelayedMessage
();
delayedMessage
.
originalPath
=
originalPath
;
delayedMessage
.
sendRequest
=
reqSend
;
delayedMessage
.
sendRequest
=
reqSend
;
delayedMessage
.
type
=
0
;
delayedMessage
.
type
=
0
;
delayedMessage
.
obj
=
newMsgObj
;
delayedMessage
.
obj
=
newMsgObj
;
...
@@ -1893,6 +1895,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
...
@@ -1893,6 +1895,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
reqSend
.
media
.
w
=
video
.
w
;
reqSend
.
media
.
w
=
video
.
w
;
reqSend
.
media
.
h
=
video
.
h
;
reqSend
.
media
.
h
=
video
.
h
;
DelayedMessage
delayedMessage
=
new
DelayedMessage
();
DelayedMessage
delayedMessage
=
new
DelayedMessage
();
delayedMessage
.
originalPath
=
originalPath
;
delayedMessage
.
sendRequest
=
reqSend
;
delayedMessage
.
sendRequest
=
reqSend
;
delayedMessage
.
type
=
1
;
delayedMessage
.
type
=
1
;
delayedMessage
.
obj
=
newMsgObj
;
delayedMessage
.
obj
=
newMsgObj
;
...
@@ -1921,6 +1924,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
...
@@ -1921,6 +1924,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
reqSend
.
media
.
mime_type
=
document
.
mime_type
;
reqSend
.
media
.
mime_type
=
document
.
mime_type
;
reqSend
.
media
.
file_name
=
document
.
file_name
;
reqSend
.
media
.
file_name
=
document
.
file_name
;
DelayedMessage
delayedMessage
=
new
DelayedMessage
();
DelayedMessage
delayedMessage
=
new
DelayedMessage
();
delayedMessage
.
originalPath
=
originalPath
;
delayedMessage
.
sendRequest
=
reqSend
;
delayedMessage
.
sendRequest
=
reqSend
;
delayedMessage
.
type
=
2
;
delayedMessage
.
type
=
2
;
delayedMessage
.
obj
=
newMsgObj
;
delayedMessage
.
obj
=
newMsgObj
;
...
@@ -1931,6 +1935,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
...
@@ -1931,6 +1935,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
reqSend
.
media
=
new
TLRPC
.
TL_inputMediaUploadedAudio
();
reqSend
.
media
=
new
TLRPC
.
TL_inputMediaUploadedAudio
();
reqSend
.
media
.
duration
=
audio
.
duration
;
reqSend
.
media
.
duration
=
audio
.
duration
;
DelayedMessage
delayedMessage
=
new
DelayedMessage
();
DelayedMessage
delayedMessage
=
new
DelayedMessage
();
delayedMessage
.
originalPath
=
originalPath
;
delayedMessage
.
sendRequest
=
reqSend
;
delayedMessage
.
sendRequest
=
reqSend
;
delayedMessage
.
type
=
3
;
delayedMessage
.
type
=
3
;
delayedMessage
.
obj
=
newMsgObj
;
delayedMessage
.
obj
=
newMsgObj
;
...
@@ -1950,10 +1955,6 @@ public class MessagesController implements NotificationCenter.NotificationCenter
...
@@ -1950,10 +1955,6 @@ public class MessagesController implements NotificationCenter.NotificationCenter
performSendEncryptedRequest
(
reqSend
,
newMsgObj
,
encryptedChat
,
null
);
performSendEncryptedRequest
(
reqSend
,
newMsgObj
,
encryptedChat
,
null
);
}
else
if
(
type
==
2
)
{
}
else
if
(
type
==
2
)
{
reqSend
.
media
=
new
TLRPC
.
TL_decryptedMessageMediaPhoto
();
reqSend
.
media
=
new
TLRPC
.
TL_decryptedMessageMediaPhoto
();
reqSend
.
media
.
iv
=
new
byte
[
32
];
reqSend
.
media
.
key
=
new
byte
[
32
];
Utilities
.
random
.
nextBytes
(
reqSend
.
media
.
iv
);
Utilities
.
random
.
nextBytes
(
reqSend
.
media
.
key
);
TLRPC
.
PhotoSize
small
=
photo
.
sizes
.
get
(
0
);
TLRPC
.
PhotoSize
small
=
photo
.
sizes
.
get
(
0
);
TLRPC
.
PhotoSize
big
=
photo
.
sizes
.
get
(
photo
.
sizes
.
size
()
-
1
);
TLRPC
.
PhotoSize
big
=
photo
.
sizes
.
get
(
photo
.
sizes
.
size
()
-
1
);
reqSend
.
media
.
thumb
=
small
.
bytes
;
reqSend
.
media
.
thumb
=
small
.
bytes
;
...
@@ -1964,6 +1965,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
...
@@ -1964,6 +1965,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
reqSend
.
media
.
size
=
big
.
size
;
reqSend
.
media
.
size
=
big
.
size
;
DelayedMessage
delayedMessage
=
new
DelayedMessage
();
DelayedMessage
delayedMessage
=
new
DelayedMessage
();
delayedMessage
.
originalPath
=
originalPath
;
delayedMessage
.
sendEncryptedRequest
=
reqSend
;
delayedMessage
.
sendEncryptedRequest
=
reqSend
;
delayedMessage
.
type
=
0
;
delayedMessage
.
type
=
0
;
delayedMessage
.
obj
=
newMsgObj
;
delayedMessage
.
obj
=
newMsgObj
;
...
@@ -1972,10 +1974,6 @@ public class MessagesController implements NotificationCenter.NotificationCenter
...
@@ -1972,10 +1974,6 @@ public class MessagesController implements NotificationCenter.NotificationCenter
performSendDelayedMessage
(
delayedMessage
);
performSendDelayedMessage
(
delayedMessage
);
}
else
if
(
type
==
3
)
{
}
else
if
(
type
==
3
)
{
reqSend
.
media
=
new
TLRPC
.
TL_decryptedMessageMediaVideo
();
reqSend
.
media
=
new
TLRPC
.
TL_decryptedMessageMediaVideo
();
reqSend
.
media
.
iv
=
new
byte
[
32
];
reqSend
.
media
.
key
=
new
byte
[
32
];
Utilities
.
random
.
nextBytes
(
reqSend
.
media
.
iv
);
Utilities
.
random
.
nextBytes
(
reqSend
.
media
.
key
);
reqSend
.
media
.
duration
=
video
.
duration
;
reqSend
.
media
.
duration
=
video
.
duration
;
reqSend
.
media
.
size
=
video
.
size
;
reqSend
.
media
.
size
=
video
.
size
;
reqSend
.
media
.
w
=
video
.
w
;
reqSend
.
media
.
w
=
video
.
w
;
...
@@ -1985,6 +1983,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
...
@@ -1985,6 +1983,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
reqSend
.
media
.
thumb_w
=
video
.
thumb
.
w
;
reqSend
.
media
.
thumb_w
=
video
.
thumb
.
w
;
DelayedMessage
delayedMessage
=
new
DelayedMessage
();
DelayedMessage
delayedMessage
=
new
DelayedMessage
();
delayedMessage
.
originalPath
=
originalPath
;
delayedMessage
.
sendEncryptedRequest
=
reqSend
;
delayedMessage
.
sendEncryptedRequest
=
reqSend
;
delayedMessage
.
type
=
1
;
delayedMessage
.
type
=
1
;
delayedMessage
.
obj
=
newMsgObj
;
delayedMessage
.
obj
=
newMsgObj
;
...
@@ -2002,10 +2001,6 @@ public class MessagesController implements NotificationCenter.NotificationCenter
...
@@ -2002,10 +2001,6 @@ public class MessagesController implements NotificationCenter.NotificationCenter
performSendEncryptedRequest
(
reqSend
,
newMsgObj
,
encryptedChat
,
null
);
performSendEncryptedRequest
(
reqSend
,
newMsgObj
,
encryptedChat
,
null
);
}
else
if
(
type
==
7
)
{
}
else
if
(
type
==
7
)
{
reqSend
.
media
=
new
TLRPC
.
TL_decryptedMessageMediaDocument
();
reqSend
.
media
=
new
TLRPC
.
TL_decryptedMessageMediaDocument
();
reqSend
.
media
.
iv
=
new
byte
[
32
];
reqSend
.
media
.
key
=
new
byte
[
32
];
Utilities
.
random
.
nextBytes
(
reqSend
.
media
.
iv
);
Utilities
.
random
.
nextBytes
(
reqSend
.
media
.
key
);
reqSend
.
media
.
size
=
document
.
size
;
reqSend
.
media
.
size
=
document
.
size
;
if
(!(
document
.
thumb
instanceof
TLRPC
.
TL_photoSizeEmpty
))
{
if
(!(
document
.
thumb
instanceof
TLRPC
.
TL_photoSizeEmpty
))
{
reqSend
.
media
.
thumb
=
document
.
thumb
.
bytes
;
reqSend
.
media
.
thumb
=
document
.
thumb
.
bytes
;
...
@@ -2020,6 +2015,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
...
@@ -2020,6 +2015,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
reqSend
.
media
.
mime_type
=
document
.
mime_type
;
reqSend
.
media
.
mime_type
=
document
.
mime_type
;
DelayedMessage
delayedMessage
=
new
DelayedMessage
();
DelayedMessage
delayedMessage
=
new
DelayedMessage
();
delayedMessage
.
originalPath
=
originalPath
;
delayedMessage
.
sendEncryptedRequest
=
reqSend
;
delayedMessage
.
sendEncryptedRequest
=
reqSend
;
delayedMessage
.
type
=
2
;
delayedMessage
.
type
=
2
;
delayedMessage
.
obj
=
newMsgObj
;
delayedMessage
.
obj
=
newMsgObj
;
...
@@ -2028,14 +2024,11 @@ public class MessagesController implements NotificationCenter.NotificationCenter
...
@@ -2028,14 +2024,11 @@ public class MessagesController implements NotificationCenter.NotificationCenter
performSendDelayedMessage
(
delayedMessage
);
performSendDelayedMessage
(
delayedMessage
);
}
else
if
(
type
==
8
)
{
}
else
if
(
type
==
8
)
{
reqSend
.
media
=
new
TLRPC
.
TL_decryptedMessageMediaAudio
();
reqSend
.
media
=
new
TLRPC
.
TL_decryptedMessageMediaAudio
();
reqSend
.
media
.
iv
=
new
byte
[
32
];
reqSend
.
media
.
key
=
new
byte
[
32
];
Utilities
.
random
.
nextBytes
(
reqSend
.
media
.
iv
);
Utilities
.
random
.
nextBytes
(
reqSend
.
media
.
key
);
reqSend
.
media
.
duration
=
audio
.
duration
;
reqSend
.
media
.
duration
=
audio
.
duration
;
reqSend
.
media
.
size
=
audio
.
size
;
reqSend
.
media
.
size
=
audio
.
size
;
DelayedMessage
delayedMessage
=
new
DelayedMessage
();
DelayedMessage
delayedMessage
=
new
DelayedMessage
();
delayedMessage
.
originalPath
=
originalPath
;
delayedMessage
.
sendEncryptedRequest
=
reqSend
;
delayedMessage
.
sendEncryptedRequest
=
reqSend
;
delayedMessage
.
type
=
3
;
delayedMessage
.
type
=
3
;
delayedMessage
.
obj
=
newMsgObj
;
delayedMessage
.
obj
=
newMsgObj
;
...
@@ -2470,23 +2463,23 @@ public class MessagesController implements NotificationCenter.NotificationCenter
...
@@ -2470,23 +2463,23 @@ public class MessagesController implements NotificationCenter.NotificationCenter
String
location
=
Utilities
.
getCacheDir
()
+
"/"
+
message
.
location
.
volume_id
+
"_"
+
message
.
location
.
local_id
+
".jpg"
;
String
location
=
Utilities
.
getCacheDir
()
+
"/"
+
message
.
location
.
volume_id
+
"_"
+
message
.
location
.
local_id
+
".jpg"
;
putToDelayedMessages
(
location
,
message
);
putToDelayedMessages
(
location
,
message
);
if
(
message
.
sendRequest
!=
null
)
{
if
(
message
.
sendRequest
!=
null
)
{
FileLoader
.
getInstance
().
uploadFile
(
location
,
null
,
null
);
FileLoader
.
getInstance
().
uploadFile
(
location
,
message
.
originalPath
,
false
);
}
else
{
}
else
{
FileLoader
.
getInstance
().
uploadFile
(
location
,
message
.
sendEncryptedRequest
.
media
.
key
,
message
.
sendEncryptedRequest
.
media
.
iv
);
FileLoader
.
getInstance
().
uploadFile
(
location
,
message
.
originalPath
,
true
);
}
}
}
else
if
(
message
.
type
==
1
)
{
}
else
if
(
message
.
type
==
1
)
{
if
(
message
.
sendRequest
!=
null
)
{
if
(
message
.
sendRequest
!=
null
)
{
if
(
message
.
sendRequest
.
media
.
thumb
==
null
)
{
if
(
message
.
sendRequest
.
media
.
thumb
==
null
)
{
String
location
=
Utilities
.
getCacheDir
()
+
"/"
+
message
.
location
.
volume_id
+
"_"
+
message
.
location
.
local_id
+
".jpg"
;
String
location
=
Utilities
.
getCacheDir
()
+
"/"
+
message
.
location
.
volume_id
+
"_"
+
message
.
location
.
local_id
+
".jpg"
;
putToDelayedMessages
(
location
,
message
);
putToDelayedMessages
(
location
,
message
);
FileLoader
.
getInstance
().
uploadFile
(
location
,
null
,
null
);
FileLoader
.
getInstance
().
uploadFile
(
location
,
message
.
originalPath
+
"thumb"
,
false
);
}
else
{
}
else
{
String
location
=
message
.
videoLocation
.
path
;
String
location
=
message
.
videoLocation
.
path
;
if
(
location
==
null
)
{
if
(
location
==
null
)
{
location
=
Utilities
.
getCacheDir
()
+
"/"
+
message
.
videoLocation
.
id
+
".mp4"
;
location
=
Utilities
.
getCacheDir
()
+
"/"
+
message
.
videoLocation
.
id
+
".mp4"
;
}
}
putToDelayedMessages
(
location
,
message
);
putToDelayedMessages
(
location
,
message
);
FileLoader
.
getInstance
().
uploadFile
(
location
,
null
,
null
);
FileLoader
.
getInstance
().
uploadFile
(
location
,
message
.
originalPath
,
false
);
}
}
}
else
{
}
else
{
String
location
=
message
.
videoLocation
.
path
;
String
location
=
message
.
videoLocation
.
path
;
...
@@ -2494,29 +2487,29 @@ public class MessagesController implements NotificationCenter.NotificationCenter
...
@@ -2494,29 +2487,29 @@ public class MessagesController implements NotificationCenter.NotificationCenter
location
=
Utilities
.
getCacheDir
()
+
"/"
+
message
.
videoLocation
.
id
+
".mp4"
;
location
=
Utilities
.
getCacheDir
()
+
"/"
+
message
.
videoLocation
.
id
+
".mp4"
;
}
}
putToDelayedMessages
(
location
,
message
);
putToDelayedMessages
(
location
,
message
);
FileLoader
.
getInstance
().
uploadFile
(
location
,
message
.
sendEncryptedRequest
.
media
.
key
,
message
.
sendEncryptedRequest
.
media
.
iv
);
FileLoader
.
getInstance
().
uploadFile
(
location
,
message
.
originalPath
,
true
);
}
}
}
else
if
(
message
.
type
==
2
)
{
}
else
if
(
message
.
type
==
2
)
{
if
(
message
.
sendRequest
!=
null
&&
message
.
sendRequest
.
media
.
thumb
==
null
&&
message
.
location
!=
null
)
{
if
(
message
.
sendRequest
!=
null
&&
message
.
sendRequest
.
media
.
thumb
==
null
&&
message
.
location
!=
null
)
{
String
location
=
Utilities
.
getCacheDir
()
+
"/"
+
message
.
location
.
volume_id
+
"_"
+
message
.
location
.
local_id
+
".jpg"
;
String
location
=
Utilities
.
getCacheDir
()
+
"/"
+
message
.
location
.
volume_id
+
"_"
+
message
.
location
.
local_id
+
".jpg"
;
putToDelayedMessages
(
location
,
message
);
putToDelayedMessages
(
location
,
message
);
FileLoader
.
getInstance
().
uploadFile
(
location
,
null
,
null
);
FileLoader
.
getInstance
().
uploadFile
(
location
,
message
.
originalPath
+
"thumb"
,
false
);
}
else
{
}
else
{
String
location
=
message
.
documentLocation
.
path
;
String
location
=
message
.
documentLocation
.
path
;
putToDelayedMessages
(
location
,
message
);
putToDelayedMessages
(
location
,
message
);
if
(
message
.
sendRequest
!=
null
)
{
if
(
message
.
sendRequest
!=
null
)
{
FileLoader
.
getInstance
().
uploadFile
(
location
,
null
,
null
);
FileLoader
.
getInstance
().
uploadFile
(
location
,
message
.
originalPath
,
false
);
}
else
{
}
else
{
FileLoader
.
getInstance
().
uploadFile
(
location
,
message
.
sendEncryptedRequest
.
media
.
key
,
message
.
sendEncryptedRequest
.
media
.
iv
);
FileLoader
.
getInstance
().
uploadFile
(
location
,
message
.
originalPath
,
true
);
}
}
}
}
}
else
if
(
message
.
type
==
3
)
{
}
else
if
(
message
.
type
==
3
)
{
String
location
=
message
.
audioLocation
.
path
;
String
location
=
message
.
audioLocation
.
path
;
putToDelayedMessages
(
location
,
message
);
putToDelayedMessages
(
location
,
message
);
if
(
message
.
sendRequest
!=
null
)
{
if
(
message
.
sendRequest
!=
null
)
{
FileLoader
.
getInstance
().
uploadFile
(
location
,
null
,
null
);
FileLoader
.
getInstance
().
uploadFile
(
location
,
null
,
false
);
}
else
{
}
else
{
FileLoader
.
getInstance
().
uploadFile
(
location
,
message
.
sendEncryptedRequest
.
media
.
key
,
message
.
sendEncryptedRequest
.
media
.
iv
);
FileLoader
.
getInstance
().
uploadFile
(
location
,
null
,
true
);
}
}
}
}
}
}
...
@@ -2633,6 +2626,8 @@ public class MessagesController implements NotificationCenter.NotificationCenter
...
@@ -2633,6 +2626,8 @@ public class MessagesController implements NotificationCenter.NotificationCenter
arr
.
remove
(
a
);
arr
.
remove
(
a
);
a
--;
a
--;
}
else
if
(
encryptedFile
!=
null
&&
message
.
sendEncryptedRequest
!=
null
)
{
}
else
if
(
encryptedFile
!=
null
&&
message
.
sendEncryptedRequest
!=
null
)
{
message
.
sendEncryptedRequest
.
media
.
key
=
encryptedFile
.
key
;
message
.
sendEncryptedRequest
.
media
.
iv
=
encryptedFile
.
iv
;
performSendEncryptedRequest
(
message
.
sendEncryptedRequest
,
message
.
obj
,
message
.
encryptedChat
,
encryptedFile
);
performSendEncryptedRequest
(
message
.
sendEncryptedRequest
,
message
.
obj
,
message
.
encryptedChat
,
encryptedFile
);
arr
.
remove
(
a
);
arr
.
remove
(
a
);
a
--;
a
--;
...
...
TMessagesProj/src/main/java/org/telegram/messenger/MessagesStorage.java
View file @
358a067a
...
@@ -97,6 +97,8 @@ public class MessagesStorage {
...
@@ -97,6 +97,8 @@ public class MessagesStorage {
database
.
executeFast
(
"CREATE TABLE user_contacts_v6(uid INTEGER PRIMARY KEY, fname TEXT, sname TEXT)"
).
stepThis
().
dispose
();
database
.
executeFast
(
"CREATE TABLE user_contacts_v6(uid INTEGER PRIMARY KEY, fname TEXT, sname TEXT)"
).
stepThis
().
dispose
();
database
.
executeFast
(
"CREATE TABLE user_phones_v6(uid INTEGER, phone TEXT, sphone TEXT, deleted INTEGER, PRIMARY KEY (uid, phone))"
).
stepThis
().
dispose
();
database
.
executeFast
(
"CREATE TABLE user_phones_v6(uid INTEGER, phone TEXT, sphone TEXT, deleted INTEGER, PRIMARY KEY (uid, phone))"
).
stepThis
().
dispose
();
database
.
executeFast
(
"CREATE TABLE sent_files(uid TEXT PRIMARY KEY, data BLOB, key BLOB, iv BLOB)"
).
stepThis
().
dispose
();
database
.
executeFast
(
"CREATE INDEX IF NOT EXISTS mid_idx_randoms ON randoms(mid);"
).
stepThis
().
dispose
();
database
.
executeFast
(
"CREATE INDEX IF NOT EXISTS mid_idx_randoms ON randoms(mid);"
).
stepThis
().
dispose
();
database
.
executeFast
(
"CREATE INDEX IF NOT EXISTS sphone_deleted_idx_user_phones ON user_phones_v6(sphone, deleted);"
).
stepThis
().
dispose
();
database
.
executeFast
(
"CREATE INDEX IF NOT EXISTS sphone_deleted_idx_user_phones ON user_phones_v6(sphone, deleted);"
).
stepThis
().
dispose
();
...
@@ -166,6 +168,8 @@ public class MessagesStorage {
...
@@ -166,6 +168,8 @@ public class MessagesStorage {
database
.
executeFast
(
"CREATE INDEX IF NOT EXISTS sphone_deleted_idx_user_phones ON user_phones_v6(sphone, deleted);"
).
stepThis
().
dispose
();
database
.
executeFast
(
"CREATE INDEX IF NOT EXISTS sphone_deleted_idx_user_phones ON user_phones_v6(sphone, deleted);"
).
stepThis
().
dispose
();
database
.
executeFast
(
"CREATE INDEX IF NOT EXISTS mid_idx_randoms ON randoms(mid);"
).
stepThis
().
dispose
();
database
.
executeFast
(
"CREATE INDEX IF NOT EXISTS mid_idx_randoms ON randoms(mid);"
).
stepThis
().
dispose
();
database
.
executeFast
(
"CREATE TABLE IF NOT EXISTS sent_files(uid TEXT PRIMARY KEY, data BLOB, key BLOB, iv BLOB)"
).
stepThis
().
dispose
();
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
FileLog
.
e
(
"tmessages"
,
e
);
FileLog
.
e
(
"tmessages"
,
e
);
...
@@ -1496,6 +1500,80 @@ public class MessagesStorage {
...
@@ -1496,6 +1500,80 @@ public class MessagesStorage {
});
});
}
}
public
void
getSentFile
(
final
String
path
,
final
Semaphore
semaphore
,
final
ArrayList
<
TLObject
>
result
)
{
if
(
path
==
null
||
semaphore
==
null
||
result
==
null
)
{
return
;
}
storageQueue
.
postRunnable
(
new
Runnable
()
{
@Override
public
void
run
()
{
try
{
String
id
=
Utilities
.
MD5
(
path
);
if
(
id
!=
null
)
{
SQLiteCursor
cursor
=
database
.
queryFinalized
(
"SELECT data, key, iv FROM sent_files WHERE uid = '"
+
id
+
"'"
);
if
(
cursor
.
next
())
{
byte
[]
fileData
=
cursor
.
byteArrayValue
(
0
);
if
(
fileData
!=
null
)
{
SerializedData
data
=
new
SerializedData
(
fileData
);
TLObject
file
=
TLClassStore
.
Instance
().
TLdeserialize
(
data
,
data
.
readInt32
());
if
(
file
instanceof
TLRPC
.
InputEncryptedFile
)
{
TLRPC
.
InputEncryptedFile
encFile
=
(
TLRPC
.
InputEncryptedFile
)
file
;
encFile
.
key
=
cursor
.
byteArrayValue
(
1
);
encFile
.
iv
=
cursor
.
byteArrayValue
(
2
);
if
(
encFile
.
key
!=
null
&&
encFile
.
iv
!=
null
)
{
result
.
add
(
file
);
}
}
else
if
(
file
instanceof
TLRPC
.
InputFile
)
{
result
.
add
(
file
);
}
}
}
cursor
.
dispose
();
}
}
catch
(
Exception
e
)
{
FileLog
.
e
(
"tmessages"
,
e
);
}
finally
{
semaphore
.
release
();
}
}
});
}
public
void
putSentFile
(
final
String
path
,
final
TLObject
file
,
final
byte
[]
key
,
final
byte
[]
iv
)
{
if
(
path
==
null
||
file
==
null
)
{
return
;
}
storageQueue
.
postRunnable
(
new
Runnable
()
{
@Override
public
void
run
()
{
try
{
String
id
=
Utilities
.
MD5
(
path
);
if
(
id
!=
null
)
{
SQLitePreparedStatement
state
=
null
;
if
(
key
!=
null
&&
iv
!=
null
)
{
state
=
database
.
executeFast
(
"REPLACE INTO sent_files VALUES(?, ?, ?, ?)"
);
}
else
{
state
=
database
.
executeFast
(
"REPLACE INTO sent_files VALUES(?, ?, NULL, NULL)"
);
}
state
.
requery
();
SerializedData
data
=
new
SerializedData
();
file
.
serializeToStream
(
data
);
state
.
bindString
(
1
,
id
);
state
.
bindByteArray
(
2
,
data
.
toByteArray
());
if
(
key
!=
null
&&
iv
!=
null
)
{
state
.
bindByteArray
(
3
,
key
);
state
.
bindByteArray
(
4
,
iv
);
}
state
.
step
();
state
.
dispose
();
}
}
catch
(
Exception
e
)
{
FileLog
.
e
(
"tmessages"
,
e
);
}
}
});
}
public
void
getEncryptedChat
(
final
int
chat_id
,
final
Semaphore
semaphore
,
final
ArrayList
<
TLObject
>
result
)
{
public
void
getEncryptedChat
(
final
int
chat_id
,
final
Semaphore
semaphore
,
final
ArrayList
<
TLObject
>
result
)
{
if
(
semaphore
==
null
||
result
==
null
)
{
if
(
semaphore
==
null
||
result
==
null
)
{
return
;
return
;
...
...
TMessagesProj/src/main/java/org/telegram/messenger/NativeLoader.java
View file @
358a067a
...
@@ -47,28 +47,44 @@ public class NativeLoader {
...
@@ -47,28 +47,44 @@ public class NativeLoader {
}
}
}
}
public
static
void
writeNativeError
(
Context
context
,
String
info
,
Throwable
throwable
)
{
private
static
OutputStreamWriter
streamWriter
=
null
;
private
static
FileOutputStream
stream
=
null
;
private
static
void
closeStream
()
{
try
{
try
{
File
sdCard
=
context
.
getFilesDir
();
if
(
stream
!=
null
)
{
if
(
sdCard
==
null
)
{
streamWriter
.
close
();
return
;
stream
.
close
();
}
stream
=
null
;
File
file
=
new
File
(
sdCard
,
"nativeer.log"
);
streamWriter
=
null
;
if
(
file
==
null
)
{
return
;
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
public
static
void
writeNativeError
(
Context
context
,
String
info
,
Throwable
throwable
)
{
try
{
if
(
stream
==
null
)
{
File
sdCard
=
context
.
getFilesDir
();
if
(
sdCard
==
null
)
{
return
;
}
File
file
=
new
File
(
sdCard
,
"nativeer.log"
);
if
(
file
==
null
)
{
return
;
}
FileOutputStream
stream
=
new
FileOutputStream
(
file
);
stream
=
new
FileOutputStream
(
file
);
OutputStreamWriter
streamWriter
=
new
OutputStreamWriter
(
stream
);
streamWriter
=
new
OutputStreamWriter
(
stream
);
streamWriter
.
write
(
"info"
+
"\n"
);
}
streamWriter
.
write
(
info
+
"\n"
);
streamWriter
.
write
(
throwable
+
"\n"
);
streamWriter
.
write
(
throwable
+
"\n"
);
StackTraceElement
[]
stack
=
throwable
.
getStackTrace
();
StackTraceElement
[]
stack
=
throwable
.
getStackTrace
();
for
(
StackTraceElement
el
:
stack
)
{
for
(
StackTraceElement
el
:
stack
)
{
streamWriter
.
write
(
el
+
"\n"
);
streamWriter
.
write
(
el
+
"\n"
);
}
}
streamWriter
.
flush
();
streamWriter
.
flush
();
streamWriter
.
close
();
stream
.
close
();
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
}
}
...
@@ -147,9 +163,9 @@ public class NativeLoader {
...
@@ -147,9 +163,9 @@ public class NativeLoader {
return
;
return
;
}
}
try
{
cleanNativeLog
(
context
);
cleanNativeLog
(
context
);
try
{
String
folder
=
null
;
String
folder
=
null
;
long
libSize
=
0
;
long
libSize
=
0
;
long
libSize2
=
0
;
long
libSize2
=
0
;
...
@@ -191,6 +207,7 @@ public class NativeLoader {
...
@@ -191,6 +207,7 @@ public class NativeLoader {
try
{
try
{
System
.
loadLibrary
(
"tmessages"
);
System
.
loadLibrary
(
"tmessages"
);
nativeLoaded
=
true
;
nativeLoaded
=
true
;
closeStream
();
return
;
return
;
}
catch
(
Error
e
)
{
}
catch
(
Error
e
)
{
FileLog
.
e
(
"tmessages"
,
e
);
FileLog
.
e
(
"tmessages"
,
e
);
...
@@ -206,6 +223,7 @@ public class NativeLoader {
...
@@ -206,6 +223,7 @@ public class NativeLoader {
FileLog
.
d
(
"tmessages"
,
"Load local lib"
);
FileLog
.
d
(
"tmessages"
,
"Load local lib"
);
System
.
load
(
destLocalFile
.
getAbsolutePath
());
System
.
load
(
destLocalFile
.
getAbsolutePath
());
nativeLoaded
=
true
;
nativeLoaded
=
true
;
closeStream
();
return
;
return
;
}
catch
(
Error
e
)
{
}
catch
(
Error
e
)
{
FileLog
.
e
(
"tmessages"
,
e
);
FileLog
.
e
(
"tmessages"
,
e
);
...
@@ -230,6 +248,7 @@ public class NativeLoader {
...
@@ -230,6 +248,7 @@ public class NativeLoader {
try
{
try
{
System
.
loadLibrary
(
"tmessages"
);
System
.
loadLibrary
(
"tmessages"
);
nativeLoaded
=
true
;
nativeLoaded
=
true
;
closeStream
();
}
catch
(
Error
e
)
{
}
catch
(
Error
e
)
{
writeNativeError
(
context
,
"last chance"
,
e
);
writeNativeError
(
context
,
"last chance"
,
e
);
FileLog
.
e
(
"tmessages"
,
e
);
FileLog
.
e
(
"tmessages"
,
e
);
...
...
TMessagesProj/src/main/java/org/telegram/messenger/TLRPC.java
View file @
358a067a
...
@@ -3783,14 +3783,6 @@ public class TLRPC {
...
@@ -3783,14 +3783,6 @@ public class TLRPC {
}
}
}
}
public
static
class
InputEncryptedFile
extends
TLObject
{
public
long
id
;
public
long
access_hash
;
public
int
parts
;
public
int
key_fingerprint
;
public
String
md5_checksum
;
}
public
static
class
TL_inputEncryptedFile
extends
InputEncryptedFile
{
public
static
class
TL_inputEncryptedFile
extends
InputEncryptedFile
{
public
static
int
constructor
=
0x5a17b5e5
;
public
static
int
constructor
=
0x5a17b5e5
;
...
@@ -9212,4 +9204,14 @@ public class TLRPC {
...
@@ -9212,4 +9204,14 @@ public class TLRPC {
}
}
}
}
}
}
public
static
class
InputEncryptedFile
extends
TLObject
{
public
long
id
;
public
long
access_hash
;
public
int
parts
;
public
int
key_fingerprint
;
public
String
md5_checksum
;
public
byte
[]
key
;
public
byte
[]
iv
;
}
}
}
TMessagesProj/src/main/java/org/telegram/messenger/TcpConnection.java
View file @
358a067a
...
@@ -135,7 +135,7 @@ public class TcpConnection extends ConnectionContext {
...
@@ -135,7 +135,7 @@ public class TcpConnection extends ConnectionContext {
client
.
addListener
(
TcpConnection
.
this
);
client
.
addListener
(
TcpConnection
.
this
);
if
((
transportRequestClass
&
RPCRequest
.
RPCRequestClassPush
)
!=
0
)
{
if
((
transportRequestClass
&
RPCRequest
.
RPCRequestClassPush
)
!=
0
)
{
if
(
isNextPort
)
{
if
(
isNextPort
)
{
client
.
setTimeout
(
15
000
);
client
.
setTimeout
(
20
000
);
}
else
{
}
else
{
client
.
setTimeout
(
30000
);
client
.
setTimeout
(
30000
);
}
}
...
@@ -424,7 +424,7 @@ public class TcpConnection extends ConnectionContext {
...
@@ -424,7 +424,7 @@ public class TcpConnection extends ConnectionContext {
datacenter
.
storeCurrentAddressAndPortNum
();
datacenter
.
storeCurrentAddressAndPortNum
();
isNextPort
=
false
;
isNextPort
=
false
;
if
((
transportRequestClass
&
RPCRequest
.
RPCRequestClassPush
)
!=
0
)
{
if
((
transportRequestClass
&
RPCRequest
.
RPCRequestClassPush
)
!=
0
)
{
client
.
setTimeout
(
4
0000
);
client
.
setTimeout
(
60000
*
3
+
2
0000
);
}
else
{
}
else
{
client
.
setTimeout
(
25000
);
client
.
setTimeout
(
25000
);
}
}
...
...
TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java
View file @
358a067a
...
@@ -747,6 +747,9 @@ public class Utilities {
...
@@ -747,6 +747,9 @@ public class Utilities {
}
}
public
static
String
MD5
(
String
md5
)
{
public
static
String
MD5
(
String
md5
)
{
if
(
md5
==
null
)
{
return
null
;
}
try
{
try
{
java
.
security
.
MessageDigest
md
=
java
.
security
.
MessageDigest
.
getInstance
(
"MD5"
);
java
.
security
.
MessageDigest
md
=
java
.
security
.
MessageDigest
.
getInstance
(
"MD5"
);
byte
[]
array
=
md
.
digest
(
md5
.
getBytes
());
byte
[]
array
=
md
.
digest
(
md5
.
getBytes
());
...
...
TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java
View file @
358a067a
...
@@ -1646,17 +1646,19 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
...
@@ -1646,17 +1646,19 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
String
tempPath
=
Utilities
.
getPath
(
data
.
getData
());
String
tempPath
=
Utilities
.
getPath
(
data
.
getData
());
boolean
isGif
=
false
;
boolean
isGif
=
false
;
String
originalPath
=
null
;
if
(
tempPath
!=
null
&&
tempPath
.
endsWith
(
".gif"
))
{
if
(
tempPath
!=
null
&&
tempPath
.
endsWith
(
".gif"
))
{
isGif
=
true
;
isGif
=
true
;
}
else
if
(
tempPath
==
null
)
{
}
else
if
(
tempPath
==
null
)
{
isGif
=
MediaController
.
isGif
(
data
.
getData
());
isGif
=
MediaController
.
isGif
(
data
.
getData
());
if
(
isGif
)
{
if
(
isGif
)
{
originalPath
=
data
.
toString
();
tempPath
=
MediaController
.
copyDocumentToCache
(
data
.
getData
(),
"gif"
);
tempPath
=
MediaController
.
copyDocumentToCache
(
data
.
getData
(),
"gif"
);
}
}
}
}
if
(
tempPath
!=
null
&&
isGif
)
{
if
(
tempPath
!=
null
&&
isGif
)
{
processSendingDocument
(
tempPath
);
processSendingDocument
(
tempPath
,
originalPath
);
}
else
{
}
else
{
processSendingPhoto
(
null
,
data
.
getData
());
processSendingPhoto
(
null
,
data
.
getData
());
}
}
...
@@ -1699,15 +1701,17 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
...
@@ -1699,15 +1701,17 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
showAttachmentError
();
showAttachmentError
();
return
;
return
;
}
}
String
originalPath
=
null
;
String
tempPath
=
Utilities
.
getPath
(
data
.
getData
());
String
tempPath
=
Utilities
.
getPath
(
data
.
getData
());
if
(
tempPath
==
null
)
{
if
(
tempPath
==
null
)
{
originalPath
=
data
.
toString
();
tempPath
=
MediaController
.
copyDocumentToCache
(
data
.
getData
(),
"file"
);
tempPath
=
MediaController
.
copyDocumentToCache
(
data
.
getData
(),
"file"
);
}
}
if
(
tempPath
==
null
)
{
if
(
tempPath
==
null
)
{
showAttachmentError
();
showAttachmentError
();
return
;
return
;
}
}
processSendingDocument
(
tempPath
);
processSendingDocument
(
tempPath
,
originalPath
);
}
}
}
}
}
}
...
@@ -1751,7 +1755,11 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
...
@@ -1751,7 +1755,11 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
}
}
TLRPC
.
TL_photo
photo
=
MessagesController
.
getInstance
().
generatePhotoSizes
(
imageFilePath
,
imageUri
);
TLRPC
.
TL_photo
photo
=
MessagesController
.
getInstance
().
generatePhotoSizes
(
imageFilePath
,
imageUri
);
if
(
photo
!=
null
)
{
if
(
photo
!=
null
)
{
MessagesController
.
getInstance
().
sendMessage
(
photo
,
dialog_id
);
String
originalPath
=
imageFilePath
;
if
(
originalPath
==
null
&&
imageUri
!=
null
)
{
originalPath
=
imageUri
.
toString
();
}
MessagesController
.
getInstance
().
sendMessage
(
photo
,
originalPath
,
dialog_id
);
if
(
chatListView
!=
null
)
{
if
(
chatListView
!=
null
)
{
chatListView
.
setSelection
(
messages
.
size
()
+
1
);
chatListView
.
setSelection
(
messages
.
size
()
+
1
);
}
}
...
@@ -1790,16 +1798,21 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
...
@@ -1790,16 +1798,21 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
Utilities
.
RunOnUIThread
(
new
Runnable
()
{
Utilities
.
RunOnUIThread
(
new
Runnable
()
{
@Override
@Override
public
void
run
()
{
public
void
run
()
{
processSendingDocument
(
finalPath
);
processSendingDocument
(
finalPath
,
null
);
}
}
});
});
}
else
{
}
else
{
final
TLRPC
.
TL_photo
photo
=
MessagesController
.
getInstance
().
generatePhotoSizes
(
path
,
uri
);
final
TLRPC
.
TL_photo
photo
=
MessagesController
.
getInstance
().
generatePhotoSizes
(
path
,
uri
);
String
originalPath
=
path
;
if
(
originalPath
==
null
&&
uri
!=
null
)
{
originalPath
=
uri
.
toString
();
}
final
String
originalPathFinal
=
originalPath
;
Utilities
.
RunOnUIThread
(
new
Runnable
()
{
Utilities
.
RunOnUIThread
(
new
Runnable
()
{
@Override
@Override
public
void
run
()
{
public
void
run
()
{
if
(
photo
!=
null
)
{
if
(
photo
!=
null
)
{
MessagesController
.
getInstance
().
sendMessage
(
photo
,
dialog_id
);
MessagesController
.
getInstance
().
sendMessage
(
photo
,
originalPathFinal
,
dialog_id
);
if
(
chatListView
!=
null
)
{
if
(
chatListView
!=
null
)
{
chatListView
.
setSelection
(
messages
.
size
()
+
1
);
chatListView
.
setSelection
(
messages
.
size
()
+
1
);
}
}
...
@@ -1813,7 +1826,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
...
@@ -1813,7 +1826,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
}).
start
();
}).
start
();
}
}
public
void
processSendingDocument
(
String
documentFilePath
)
{
public
void
processSendingDocument
(
String
documentFilePath
,
String
originalPathOverride
)
{
if
(
documentFilePath
==
null
||
documentFilePath
.
length
()
==
0
)
{
if
(
documentFilePath
==
null
||
documentFilePath
.
length
()
==
0
)
{
return
;
return
;
}
}
...
@@ -1864,7 +1877,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
...
@@ -1864,7 +1877,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
document
.
thumb
=
new
TLRPC
.
TL_photoSizeEmpty
();
document
.
thumb
=
new
TLRPC
.
TL_photoSizeEmpty
();
document
.
thumb
.
type
=
"s"
;
document
.
thumb
.
type
=
"s"
;
}
}
MessagesController
.
getInstance
().
sendMessage
(
document
,
dialog_id
);
MessagesController
.
getInstance
().
sendMessage
(
document
,
originalPathOverride
==
null
?
(
documentFilePath
+
document
.
size
)
:
originalPathOverride
,
dialog_id
);
}
}
public
void
processSendingVideo
(
final
String
videoPath
)
{
public
void
processSendingVideo
(
final
String
videoPath
)
{
...
@@ -1899,7 +1912,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
...
@@ -1899,7 +1912,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
mp
.
release
();
mp
.
release
();
MediaStore
.
Video
.
Media
media
=
new
MediaStore
.
Video
.
Media
();
MediaStore
.
Video
.
Media
media
=
new
MediaStore
.
Video
.
Media
();
MessagesController
.
getInstance
().
sendMessage
(
video
,
dialog_id
);
MessagesController
.
getInstance
().
sendMessage
(
video
,
videoPath
,
dialog_id
);
if
(
chatListView
!=
null
)
{
if
(
chatListView
!=
null
)
{
chatListView
.
setSelection
(
messages
.
size
()
+
1
);
chatListView
.
setSelection
(
messages
.
size
()
+
1
);
}
}
...
@@ -3127,7 +3140,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
...
@@ -3127,7 +3140,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
MessagesController
.
getInstance
().
sendMessage
(
selectedObject
,
dialog_id
);
MessagesController
.
getInstance
().
sendMessage
(
selectedObject
,
dialog_id
);
}
else
{
}
else
{
TLRPC
.
TL_photo
photo
=
(
TLRPC
.
TL_photo
)
selectedObject
.
messageOwner
.
media
.
photo
;
TLRPC
.
TL_photo
photo
=
(
TLRPC
.
TL_photo
)
selectedObject
.
messageOwner
.
media
.
photo
;
MessagesController
.
getInstance
().
sendMessage
(
photo
,
dialog_id
);
MessagesController
.
getInstance
().
sendMessage
(
photo
,
selectedObject
.
messageOwner
.
attachPath
,
dialog_id
);
}
}
}
else
if
(
selectedObject
.
type
==
3
)
{
}
else
if
(
selectedObject
.
type
==
3
)
{
if
(
selectedObject
.
messageOwner
instanceof
TLRPC
.
TL_messageForwarded
)
{
if
(
selectedObject
.
messageOwner
instanceof
TLRPC
.
TL_messageForwarded
)
{
...
@@ -3135,7 +3148,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
...
@@ -3135,7 +3148,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
}
else
{
}
else
{
TLRPC
.
TL_video
video
=
(
TLRPC
.
TL_video
)
selectedObject
.
messageOwner
.
media
.
video
;
TLRPC
.
TL_video
video
=
(
TLRPC
.
TL_video
)
selectedObject
.
messageOwner
.
media
.
video
;
video
.
path
=
selectedObject
.
messageOwner
.
attachPath
;
video
.
path
=
selectedObject
.
messageOwner
.
attachPath
;
MessagesController
.
getInstance
().
sendMessage
(
video
,
dialog_id
);
MessagesController
.
getInstance
().
sendMessage
(
video
,
video
.
path
,
dialog_id
);
}
}
}
else
if
(
selectedObject
.
type
==
12
||
selectedObject
.
type
==
13
)
{
}
else
if
(
selectedObject
.
type
==
12
||
selectedObject
.
type
==
13
)
{
TLRPC
.
User
user
=
MessagesController
.
getInstance
().
users
.
get
(
selectedObject
.
messageOwner
.
media
.
user_id
);
TLRPC
.
User
user
=
MessagesController
.
getInstance
().
users
.
get
(
selectedObject
.
messageOwner
.
media
.
user_id
);
...
@@ -3143,7 +3156,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
...
@@ -3143,7 +3156,7 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
}
else
if
(
selectedObject
.
type
==
8
||
selectedObject
.
type
==
9
)
{
}
else
if
(
selectedObject
.
type
==
8
||
selectedObject
.
type
==
9
)
{
TLRPC
.
TL_document
document
=
(
TLRPC
.
TL_document
)
selectedObject
.
messageOwner
.
media
.
document
;
TLRPC
.
TL_document
document
=
(
TLRPC
.
TL_document
)
selectedObject
.
messageOwner
.
media
.
document
;
document
.
path
=
selectedObject
.
messageOwner
.
attachPath
;
document
.
path
=
selectedObject
.
messageOwner
.
attachPath
;
MessagesController
.
getInstance
().
sendMessage
(
document
,
dialog_id
);
MessagesController
.
getInstance
().
sendMessage
(
document
,
d
ocument
.
path
,
d
ialog_id
);
}
else
if
(
selectedObject
.
type
==
2
)
{
}
else
if
(
selectedObject
.
type
==
2
)
{
TLRPC
.
TL_audio
audio
=
(
TLRPC
.
TL_audio
)
selectedObject
.
messageOwner
.
media
.
audio
;
TLRPC
.
TL_audio
audio
=
(
TLRPC
.
TL_audio
)
selectedObject
.
messageOwner
.
media
.
audio
;
audio
.
path
=
selectedObject
.
messageOwner
.
attachPath
;
audio
.
path
=
selectedObject
.
messageOwner
.
attachPath
;
...
@@ -3201,43 +3214,9 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
...
@@ -3201,43 +3214,9 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
}
}
@Override
@Override
public
void
didSelectFile
(
DocumentSelectActivity
activity
,
String
path
,
String
name
,
String
ext
,
long
size
)
{
public
void
didSelectFile
(
DocumentSelectActivity
activity
,
String
path
)
{
activity
.
finishFragment
();
activity
.
finishFragment
();
TLRPC
.
TL_document
document
=
new
TLRPC
.
TL_document
();
processSendingDocument
(
path
,
null
);
document
.
id
=
0
;
document
.
user_id
=
UserConfig
.
getClientUserId
();
document
.
date
=
ConnectionsManager
.
getInstance
().
getCurrentTime
();
document
.
file_name
=
name
;
document
.
size
=
(
int
)
size
;
document
.
dc_id
=
0
;
document
.
path
=
path
;
if
(
ext
.
length
()
!=
0
)
{
MimeTypeMap
myMime
=
MimeTypeMap
.
getSingleton
();
String
mimeType
=
myMime
.
getMimeTypeFromExtension
(
ext
.
toLowerCase
());
if
(
mimeType
!=
null
)
{
document
.
mime_type
=
mimeType
;
}
else
{
document
.
mime_type
=
"application/octet-stream"
;
}
}
else
{
document
.
mime_type
=
"application/octet-stream"
;
}
if
(
document
.
mime_type
.
equals
(
"image/gif"
))
{
try
{
Bitmap
bitmap
=
FileLoader
.
loadBitmap
(
path
,
null
,
90
,
90
);
if
(
bitmap
!=
null
)
{
document
.
thumb
=
FileLoader
.
scaleAndSaveImage
(
bitmap
,
90
,
90
,
80
,
currentEncryptedChat
!=
null
);
document
.
thumb
.
type
=
"s"
;
}
}
catch
(
Exception
e
)
{
FileLog
.
e
(
"tmessages"
,
e
);
}
}
if
(
document
.
thumb
==
null
)
{
document
.
thumb
=
new
TLRPC
.
TL_photoSizeEmpty
();
document
.
thumb
.
type
=
"s"
;
}
MessagesController
.
getInstance
().
sendMessage
(
document
,
dialog_id
);
}
}
@Override
@Override
...
@@ -3841,10 +3820,14 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
...
@@ -3841,10 +3820,14 @@ public class ChatActivity extends BaseFragment implements SizeNotifierRelativeLa
photoImage
.
setImage
(
message
.
messageOwner
.
action
.
newUserPhoto
.
photo_small
,
"50_50"
,
Utilities
.
getUserAvatarForId
(
currentUser
.
id
));
photoImage
.
setImage
(
message
.
messageOwner
.
action
.
newUserPhoto
.
photo_small
,
"50_50"
,
Utilities
.
getUserAvatarForId
(
currentUser
.
id
));
}
else
{
}
else
{
PhotoObject
photo
=
PhotoObject
.
getClosestImageWithSize
(
message
.
photoThumbs
,
Utilities
.
dp
(
64
),
Utilities
.
dp
(
64
));
PhotoObject
photo
=
PhotoObject
.
getClosestImageWithSize
(
message
.
photoThumbs
,
Utilities
.
dp
(
64
),
Utilities
.
dp
(
64
));
if
(
photo
.
image
!=
null
)
{
if
(
photo
!=
null
)
{
photoImage
.
setImageBitmap
(
photo
.
image
);
if
(
photo
.
image
!=
null
)
{
photoImage
.
setImageBitmap
(
photo
.
image
);
}
else
{
photoImage
.
setImage
(
photo
.
photoOwner
.
location
,
"50_50"
,
Utilities
.
getGroupAvatarForId
(
currentChat
.
id
));
}
}
else
{
}
else
{
photoImage
.
setImage
(
photo
.
photoOwner
.
location
,
"50_50"
,
Utilities
.
getGroupAvatarForId
(
currentChat
.
id
));
photoImage
.
setImage
Resource
(
Utilities
.
getGroupAvatarForId
(
currentChat
.
id
));
}
}
}
}
photoImage
.
imageReceiver
.
setVisible
(!
PhotoViewer
.
getInstance
().
isShowingImage
(
message
),
false
);
photoImage
.
imageReceiver
.
setVisible
(!
PhotoViewer
.
getInstance
().
isShowingImage
(
message
),
false
);
...
...
TMessagesProj/src/main/java/org/telegram/ui/ContactAddActivity.java
View file @
358a067a
...
@@ -102,6 +102,7 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent
...
@@ -102,6 +102,7 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent
onlineText
=
(
TextView
)
fragmentView
.
findViewById
(
R
.
id
.
settings_online
);
onlineText
=
(
TextView
)
fragmentView
.
findViewById
(
R
.
id
.
settings_online
);
avatarImage
=
(
BackupImageView
)
fragmentView
.
findViewById
(
R
.
id
.
settings_avatar_image
);
avatarImage
=
(
BackupImageView
)
fragmentView
.
findViewById
(
R
.
id
.
settings_avatar_image
);
avatarImage
.
processDetach
=
false
;
phoneText
=
(
TextView
)
fragmentView
.
findViewById
(
R
.
id
.
settings_name
);
phoneText
=
(
TextView
)
fragmentView
.
findViewById
(
R
.
id
.
settings_name
);
Typeface
typeface
=
Utilities
.
getTypeface
(
"fonts/rmedium.ttf"
);
Typeface
typeface
=
Utilities
.
getTypeface
(
"fonts/rmedium.ttf"
);
phoneText
.
setTypeface
(
typeface
);
phoneText
.
setTypeface
(
typeface
);
...
...
TMessagesProj/src/main/java/org/telegram/ui/CountrySelectActivity.java
View file @
358a067a
...
@@ -85,7 +85,7 @@ public class CountrySelectActivity extends BaseFragment {
...
@@ -85,7 +85,7 @@ public class CountrySelectActivity extends BaseFragment {
}
}
arr
.
add
(
c
);
arr
.
add
(
c
);
}
}
reader
.
close
();
//TODO
reader
.
close
();
stream
.
close
();
stream
.
close
();
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
FileLog
.
e
(
"tmessages"
,
e
);
FileLog
.
e
(
"tmessages"
,
e
);
...
...
TMessagesProj/src/main/java/org/telegram/ui/DocumentSelectActivity.java
View file @
358a067a
...
@@ -45,7 +45,7 @@ import java.util.HashMap;
...
@@ -45,7 +45,7 @@ import java.util.HashMap;
public
class
DocumentSelectActivity
extends
BaseFragment
{
public
class
DocumentSelectActivity
extends
BaseFragment
{
public
static
abstract
interface
DocumentSelectActivityDelegate
{
public
static
abstract
interface
DocumentSelectActivityDelegate
{
public
void
didSelectFile
(
DocumentSelectActivity
activity
,
String
path
,
String
name
,
String
ext
,
long
size
);
public
void
didSelectFile
(
DocumentSelectActivity
activity
,
String
path
);
public
void
startDocumentSelectActivity
();
public
void
startDocumentSelectActivity
();
}
}
...
@@ -186,7 +186,7 @@ public class DocumentSelectActivity extends BaseFragment {
...
@@ -186,7 +186,7 @@ public class DocumentSelectActivity extends BaseFragment {
return
;
return
;
}
}
if
(
delegate
!=
null
)
{
if
(
delegate
!=
null
)
{
delegate
.
didSelectFile
(
DocumentSelectActivity
.
this
,
file
.
getAbsolutePath
()
,
item
.
title
,
item
.
ext
,
file
.
length
()
);
delegate
.
didSelectFile
(
DocumentSelectActivity
.
this
,
file
.
getAbsolutePath
());
}
}
}
}
}
}
...
...
TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java
View file @
358a067a
...
@@ -498,14 +498,14 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen
...
@@ -498,14 +498,14 @@ public class LaunchActivity extends ActionBarActivity implements NotificationCen
fragment
.
processSendingText
(
sendingText
);
fragment
.
processSendingText
(
sendingText
);
}
}
if
(
documentPath
!=
null
)
{
if
(
documentPath
!=
null
)
{
fragment
.
processSendingDocument
(
documentPath
);
fragment
.
processSendingDocument
(
documentPath
,
null
);
}
}
if
(
imagesPathArray
!=
null
)
{
if
(
imagesPathArray
!=
null
)
{
fragment
.
processSendingPhotos
(
null
,
imagesPathArray
);
fragment
.
processSendingPhotos
(
null
,
imagesPathArray
);
}
}
if
(
documentsPathArray
!=
null
)
{
if
(
documentsPathArray
!=
null
)
{
for
(
String
path
:
documentsPathArray
)
{
for
(
String
path
:
documentsPathArray
)
{
fragment
.
processSendingDocument
(
path
);
fragment
.
processSendingDocument
(
path
,
null
);
}
}
}
}
if
(
contactsToSend
!=
null
&&
!
contactsToSend
.
isEmpty
())
{
if
(
contactsToSend
!=
null
&&
!
contactsToSend
.
isEmpty
())
{
...
...
TMessagesProj/src/main/java/org/telegram/ui/UserProfileActivity.java
View file @
358a067a
...
@@ -148,21 +148,31 @@ public class UserProfileActivity extends BaseFragment implements NotificationCen
...
@@ -148,21 +148,31 @@ public class UserProfileActivity extends BaseFragment implements NotificationCen
if
(
id
==
-
1
)
{
if
(
id
==
-
1
)
{
finishFragment
();
finishFragment
();
}
else
if
(
id
==
block_contact
)
{
}
else
if
(
id
==
block_contact
)
{
TLRPC
.
User
user
=
MessagesController
.
getInstance
().
users
.
get
(
user_id
);
AlertDialog
.
Builder
builder
=
new
AlertDialog
.
Builder
(
getParentActivity
());
if
(
user
==
null
)
{
builder
.
setMessage
(
LocaleController
.
getString
(
"AreYouSure"
,
R
.
string
.
AreYouSure
));
return
;
builder
.
setTitle
(
LocaleController
.
getString
(
"AppName"
,
R
.
string
.
AppName
));
}
builder
.
setPositiveButton
(
LocaleController
.
getString
(
"OK"
,
R
.
string
.
OK
),
new
DialogInterface
.
OnClickListener
()
{
TLRPC
.
TL_contacts_block
req
=
new
TLRPC
.
TL_contacts_block
();
req
.
id
=
MessagesController
.
getInputUser
(
user
);
TLRPC
.
TL_contactBlocked
blocked
=
new
TLRPC
.
TL_contactBlocked
();
blocked
.
user_id
=
user_id
;
blocked
.
date
=
(
int
)(
System
.
currentTimeMillis
()
/
1000
);
ConnectionsManager
.
getInstance
().
performRpc
(
req
,
new
RPCRequest
.
RPCRequestDelegate
()
{
@Override
@Override
public
void
run
(
TLObject
response
,
TLRPC
.
TL_error
error
)
{
public
void
onClick
(
DialogInterface
dialogInterface
,
int
i
)
{
TLRPC
.
User
user
=
MessagesController
.
getInstance
().
users
.
get
(
user_id
);
if
(
user
==
null
)
{
return
;
}
TLRPC
.
TL_contacts_block
req
=
new
TLRPC
.
TL_contacts_block
();
req
.
id
=
MessagesController
.
getInputUser
(
user
);
TLRPC
.
TL_contactBlocked
blocked
=
new
TLRPC
.
TL_contactBlocked
();
blocked
.
user_id
=
user_id
;
blocked
.
date
=
(
int
)(
System
.
currentTimeMillis
()
/
1000
);
ConnectionsManager
.
getInstance
().
performRpc
(
req
,
new
RPCRequest
.
RPCRequestDelegate
()
{
@Override
public
void
run
(
TLObject
response
,
TLRPC
.
TL_error
error
)
{
}
},
null
,
true
,
RPCRequest
.
RPCRequestClassGeneric
);
}
}
},
null
,
true
,
RPCRequest
.
RPCRequestClassGeneric
);
});
builder
.
setNegativeButton
(
LocaleController
.
getString
(
"Cancel"
,
R
.
string
.
Cancel
),
null
);
showAlertDialog
(
builder
);
}
else
if
(
id
==
add_contact
)
{
}
else
if
(
id
==
add_contact
)
{
TLRPC
.
User
user
=
MessagesController
.
getInstance
().
users
.
get
(
user_id
);
TLRPC
.
User
user
=
MessagesController
.
getInstance
().
users
.
get
(
user_id
);
Bundle
args
=
new
Bundle
();
Bundle
args
=
new
Bundle
();
...
...
TMessagesProj/src/main/java/org/telegram/ui/Views/ActionBar/ActionBarLayer.java
View file @
358a067a
...
@@ -377,7 +377,7 @@ public class ActionBarLayer extends FrameLayout {
...
@@ -377,7 +377,7 @@ public class ActionBarLayer extends FrameLayout {
}
}
actionMode
.
setVisibility
(
GONE
);
actionMode
.
setVisibility
(
GONE
);
if
(
backButtonFrameLayout
!=
null
)
{
if
(
backButtonFrameLayout
!=
null
)
{
backButtonFrameLayout
.
setVisibility
(
VISIBLE
);
backButtonFrameLayout
.
setVisibility
(
isSearchFieldVisible
||
actionOverlay
==
null
||
actionOverlay
.
getVisibility
()
==
GONE
?
VISIBLE
:
IN
VISIBLE
);
}
}
if
(
menu
!=
null
)
{
if
(
menu
!=
null
)
{
menu
.
setVisibility
(
VISIBLE
);
menu
.
setVisibility
(
VISIBLE
);
...
@@ -471,10 +471,10 @@ public class ActionBarLayer extends FrameLayout {
...
@@ -471,10 +471,10 @@ public class ActionBarLayer extends FrameLayout {
return
;
return
;
}
}
isBackOverlayVisible
=
visible
;
isBackOverlayVisible
=
visible
;
positionBackOverlay
(
getMeasuredWidth
(),
getMeasuredHeight
());
if
(
visible
)
{
if
(
visible
)
{
((
ActionBarActivity
)
getContext
()).
onOverlayShow
(
actionOverlay
,
parentFragment
);
((
ActionBarActivity
)
getContext
()).
onOverlayShow
(
actionOverlay
,
parentFragment
);
}
}
positionBackOverlay
(
getMeasuredWidth
(),
getMeasuredHeight
());
}
}
private
void
positionBackOverlay
(
int
widthMeasureSpec
,
int
heightMeasureSpec
)
{
private
void
positionBackOverlay
(
int
widthMeasureSpec
,
int
heightMeasureSpec
)
{
...
...
TMessagesProj/src/main/java/org/telegram/ui/Views/AvatarUpdater.java
View file @
358a067a
...
@@ -129,7 +129,7 @@ public class AvatarUpdater implements NotificationCenter.NotificationCenterDeleg
...
@@ -129,7 +129,7 @@ public class AvatarUpdater implements NotificationCenter.NotificationCenterDeleg
uploadingAvatar
=
Utilities
.
getCacheDir
()
+
"/"
+
bigPhoto
.
location
.
volume_id
+
"_"
+
bigPhoto
.
location
.
local_id
+
".jpg"
;
uploadingAvatar
=
Utilities
.
getCacheDir
()
+
"/"
+
bigPhoto
.
location
.
volume_id
+
"_"
+
bigPhoto
.
location
.
local_id
+
".jpg"
;
NotificationCenter
.
getInstance
().
addObserver
(
AvatarUpdater
.
this
,
FileLoader
.
FileDidUpload
);
NotificationCenter
.
getInstance
().
addObserver
(
AvatarUpdater
.
this
,
FileLoader
.
FileDidUpload
);
NotificationCenter
.
getInstance
().
addObserver
(
AvatarUpdater
.
this
,
FileLoader
.
FileDidFailUpload
);
NotificationCenter
.
getInstance
().
addObserver
(
AvatarUpdater
.
this
,
FileLoader
.
FileDidFailUpload
);
FileLoader
.
getInstance
().
uploadFile
(
uploadingAvatar
,
null
,
null
);
FileLoader
.
getInstance
().
uploadFile
(
uploadingAvatar
,
null
,
false
);
}
}
}
}
}
}
...
...
TMessagesProj/src/main/res/layout/updating_state_layout.xml
View file @
358a067a
<
FrameLayout
<
org.telegram.ui.Views.FrameLayoutFixed
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"400dp"
android:layout_width=
"400dp"
android:layout_height=
"fill_parent"
android:layout_height=
"fill_parent"
android:background=
"@drawable/bar_selector"
android:background=
"@drawable/bar_selector"
android:id=
"@+id/back_button_background"
>
android:id=
"@+id/back_button_background"
android:layout_gravity=
"top"
>
<ProgressBar
<ProgressBar
android:layout_height=
"32dp"
android:layout_height=
"32dp"
...
@@ -26,15 +27,15 @@
...
@@ -26,15 +27,15 @@
<TextView
<TextView
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_width=
"
fill_par
ent"
android:layout_width=
"
wrap_cont
ent"
android:layout_marginLeft=
"52dp"
android:layout_marginLeft=
"52dp"
android:textColor=
"#ffffff"
android:textColor=
"#ffffff"
android:textSize=
"17dp"
android:textSize=
"17dp"
android:layout_gravity=
"center_vertical|left"
android:layout_gravity=
"center_vertical|left"
android:gravity=
"left"
android:gravity=
"
top|
left"
android:ellipsize=
"end"
android:ellipsize=
"end"
android:singleLine=
"true"
android:singleLine=
"true"
android:paddingRight=
"2dp"
android:paddingRight=
"2dp"
android:id=
"@+id/status_text"
/>
android:id=
"@+id/status_text"
/>
</FrameLayout>
</org.telegram.ui.Views.FrameLayoutFixed>
\ No newline at end of file
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment