mirror of
https://github.com/pierre42100/ComunicAndroid
synced 2024-11-23 22:09:30 +00:00
Rearranged utilities
This commit is contained in:
parent
9bbc82d3a5
commit
a78594772a
@ -8,7 +8,7 @@ import org.communiquons.android.comunic.client.data.enums.LoginResult;
|
|||||||
import org.communiquons.android.comunic.client.data.models.APIRequest;
|
import org.communiquons.android.comunic.client.data.models.APIRequest;
|
||||||
import org.communiquons.android.comunic.client.data.models.APIResponse;
|
import org.communiquons.android.comunic.client.data.models.APIResponse;
|
||||||
import org.communiquons.android.comunic.client.data.models.NewAccount;
|
import org.communiquons.android.comunic.client.data.models.NewAccount;
|
||||||
import org.communiquons.android.comunic.client.data.utils.Utilities;
|
import org.communiquons.android.comunic.client.data.utils.FilesUtils;
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
@ -28,9 +28,9 @@ import java.util.Objects;
|
|||||||
public class AccountHelper extends BaseHelper {
|
public class AccountHelper extends BaseHelper {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utilities object
|
* Files utilities object
|
||||||
*/
|
*/
|
||||||
private Utilities utils;
|
private FilesUtils mFilesUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tokens list
|
* Tokens list
|
||||||
@ -40,7 +40,7 @@ public class AccountHelper extends BaseHelper {
|
|||||||
/**
|
/**
|
||||||
* Tokens file
|
* Tokens file
|
||||||
*/
|
*/
|
||||||
private String tokFilename = "login_tokens.json";
|
private static final String tokFilename = "login_tokens.json";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The name of the userID file
|
* The name of the userID file
|
||||||
@ -55,7 +55,7 @@ public class AccountHelper extends BaseHelper {
|
|||||||
public AccountHelper(Context context){
|
public AccountHelper(Context context){
|
||||||
super(context);
|
super(context);
|
||||||
|
|
||||||
utils = new Utilities(context);
|
mFilesUtils = new FilesUtils(context);
|
||||||
|
|
||||||
//Initialize tokens array
|
//Initialize tokens array
|
||||||
tokens = new ArrayList<>();
|
tokens = new ArrayList<>();
|
||||||
@ -159,7 +159,7 @@ public class AccountHelper extends BaseHelper {
|
|||||||
public int get_current_user_id(){
|
public int get_current_user_id(){
|
||||||
|
|
||||||
//Get file content
|
//Get file content
|
||||||
String userIDString = utils.file_get_content(USER_ID_FILENAME);
|
String userIDString = mFilesUtils.file_get_content(USER_ID_FILENAME);
|
||||||
|
|
||||||
//Convert into an int
|
//Convert into an int
|
||||||
try {
|
try {
|
||||||
@ -183,7 +183,7 @@ public class AccountHelper extends BaseHelper {
|
|||||||
*/
|
*/
|
||||||
private boolean save_new_user_id(int id){
|
private boolean save_new_user_id(int id){
|
||||||
//Save new file content
|
//Save new file content
|
||||||
return utils.file_put_contents(USER_ID_FILENAME, ""+id);
|
return mFilesUtils.file_put_contents(USER_ID_FILENAME, ""+id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -236,7 +236,7 @@ public class AccountHelper extends BaseHelper {
|
|||||||
String tokens_file;
|
String tokens_file;
|
||||||
|
|
||||||
//Get the tokens file content
|
//Get the tokens file content
|
||||||
tokens_file = utils.file_get_content(tokFilename);
|
tokens_file = mFilesUtils.file_get_content(tokFilename);
|
||||||
|
|
||||||
//Check if there was an error
|
//Check if there was an error
|
||||||
if(Objects.equals(tokens_file, ""))
|
if(Objects.equals(tokens_file, ""))
|
||||||
@ -303,7 +303,7 @@ public class AccountHelper extends BaseHelper {
|
|||||||
String tokens_string = tokens.toString();
|
String tokens_string = tokens.toString();
|
||||||
|
|
||||||
//Try to write result to file
|
//Try to write result to file
|
||||||
if(!utils.file_put_contents(tokFilename, tokens_string)){
|
if(!mFilesUtils.file_put_contents(tokFilename, tokens_string)){
|
||||||
Log.e("Account", "Couldn't save new tokens !");
|
Log.e("Account", "Couldn't save new tokens !");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -317,7 +317,7 @@ public class AccountHelper extends BaseHelper {
|
|||||||
* @return False in case of failure
|
* @return False in case of failure
|
||||||
*/
|
*/
|
||||||
private boolean remove_login_tokens(){
|
private boolean remove_login_tokens(){
|
||||||
if(!utils.file_put_contents(tokFilename, "[]"))
|
if(!mFilesUtils.file_put_contents(tokFilename, "[]"))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
//Create new array
|
//Create new array
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
package org.communiquons.android.comunic.client.data.models;
|
package org.communiquons.android.comunic.client.data.models;
|
||||||
|
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
import org.communiquons.android.comunic.client.data.utils.ArrayUtils;
|
import org.communiquons.android.comunic.client.data.utils.ArrayUtils;
|
||||||
import org.communiquons.android.comunic.client.data.utils.Utilities;
|
import org.communiquons.android.comunic.client.ui.utils.UiUtils;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
@ -242,7 +241,7 @@ public class ConversationsInfo {
|
|||||||
* @return The displayed name of the conversation
|
* @return The displayed name of the conversation
|
||||||
*/
|
*/
|
||||||
public String getDisplayName() {
|
public String getDisplayName() {
|
||||||
return Utilities.prepareStringTextView(displayName);
|
return UiUtils.prepareStringTextView(displayName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package org.communiquons.android.comunic.client.data.models;
|
package org.communiquons.android.comunic.client.data.models;
|
||||||
|
|
||||||
import org.communiquons.android.comunic.client.data.utils.Utilities;
|
import org.communiquons.android.comunic.client.data.utils.TimeUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Friend object
|
* Friend object
|
||||||
@ -119,6 +119,6 @@ public class Friend {
|
|||||||
* @return True if user is signed in / false else
|
* @return True if user is signed in / false else
|
||||||
*/
|
*/
|
||||||
public boolean signed_in(){
|
public boolean signed_in(){
|
||||||
return (Utilities.time()-USER_INACTIVE_AFTER) < last_activity;
|
return (TimeUtils.time()-USER_INACTIVE_AFTER) < last_activity;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ import org.communiquons.android.comunic.client.data.enums.GroupRegistrationLevel
|
|||||||
import org.communiquons.android.comunic.client.data.enums.GroupVisibility;
|
import org.communiquons.android.comunic.client.data.enums.GroupVisibility;
|
||||||
import org.communiquons.android.comunic.client.data.enums.GroupsMembershipLevels;
|
import org.communiquons.android.comunic.client.data.enums.GroupsMembershipLevels;
|
||||||
import org.communiquons.android.comunic.client.data.enums.GroupPostsCreationLevel;
|
import org.communiquons.android.comunic.client.data.enums.GroupPostsCreationLevel;
|
||||||
import org.communiquons.android.comunic.client.data.utils.Utilities;
|
import org.communiquons.android.comunic.client.ui.utils.UiUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Group information base model
|
* Group information base model
|
||||||
@ -48,7 +48,7 @@ public class GroupInfo {
|
|||||||
* @return The name of the group ready to be shown on a TextView
|
* @return The name of the group ready to be shown on a TextView
|
||||||
*/
|
*/
|
||||||
public String getDisplayName(){
|
public String getDisplayName(){
|
||||||
return Utilities.prepareStringTextView(getName());
|
return UiUtils.prepareStringTextView(getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getIcon_url() {
|
public String getIcon_url() {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package org.communiquons.android.comunic.client.data.models;
|
package org.communiquons.android.comunic.client.data.models;
|
||||||
|
|
||||||
import org.communiquons.android.comunic.client.data.utils.Utilities;
|
import org.communiquons.android.comunic.client.ui.utils.UiUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class contains the informations about a single user
|
* This class contains the informations about a single user
|
||||||
@ -88,7 +88,7 @@ public class UserInfo {
|
|||||||
* @return The full name of the user
|
* @return The full name of the user
|
||||||
*/
|
*/
|
||||||
public String getDisplayFullName(){
|
public String getDisplayFullName(){
|
||||||
return Utilities.prepareStringTextView(getFullName());
|
return UiUtils.prepareStringTextView(getFullName());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -3,8 +3,8 @@ package org.communiquons.android.comunic.client.data.runnables;
|
|||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import org.communiquons.android.comunic.client.data.utils.StreamsUtils;
|
||||||
import org.communiquons.android.comunic.client.ui.utils.BitmapUtils;
|
import org.communiquons.android.comunic.client.ui.utils.BitmapUtils;
|
||||||
import org.communiquons.android.comunic.client.data.utils.Utilities;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
@ -73,7 +73,7 @@ class ImageDownloadRunnable implements Runnable {
|
|||||||
Log.v(TAG, "Downloading image (size: "+img_size+") at " + url);
|
Log.v(TAG, "Downloading image (size: "+img_size+") at " + url);
|
||||||
|
|
||||||
//Big images have to written byte per byte
|
//Big images have to written byte per byte
|
||||||
Utilities.InputToOutputStream(is, os);
|
StreamsUtils.InputToOutputStream(is, os);
|
||||||
|
|
||||||
//Close streams and disconnect
|
//Close streams and disconnect
|
||||||
is.close();
|
is.close();
|
||||||
|
@ -2,12 +2,13 @@ package org.communiquons.android.comunic.client.data.utils;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Files utilities
|
* Files utilities
|
||||||
@ -18,6 +19,25 @@ import java.util.Random;
|
|||||||
|
|
||||||
public class FilesUtils {
|
public class FilesUtils {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Debug tag
|
||||||
|
*/
|
||||||
|
private static final String TAG = FilesUtils.class.getCanonicalName();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Application context
|
||||||
|
*/
|
||||||
|
private Context mContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Account class constructor
|
||||||
|
*
|
||||||
|
* @param context Context of the application
|
||||||
|
*/
|
||||||
|
public FilesUtils(Context context){
|
||||||
|
mContext = context.getApplicationContext();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Temporary directory
|
* Temporary directory
|
||||||
*/
|
*/
|
||||||
@ -64,7 +84,7 @@ public class FilesUtils {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
FileOutputStream os = new FileOutputStream(file, false);
|
FileOutputStream os = new FileOutputStream(file, false);
|
||||||
Utilities.InputToOutputStream(is, os);
|
StreamsUtils.InputToOutputStream(is, os);
|
||||||
os.close();
|
os.close();
|
||||||
|
|
||||||
} catch (java.io.IOException e) {
|
} catch (java.io.IOException e) {
|
||||||
@ -75,4 +95,67 @@ public class FilesUtils {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the content of a file
|
||||||
|
*
|
||||||
|
* @param filename the name of the file to get
|
||||||
|
* @return The content of the file
|
||||||
|
*/
|
||||||
|
public String file_get_content(String filename){
|
||||||
|
|
||||||
|
FileInputStream fileInputStream;
|
||||||
|
|
||||||
|
try {
|
||||||
|
fileInputStream = mContext.openFileInput(filename);
|
||||||
|
|
||||||
|
String result = "";
|
||||||
|
int currByte = 0;
|
||||||
|
while(currByte != -1){
|
||||||
|
|
||||||
|
currByte = fileInputStream.read();
|
||||||
|
|
||||||
|
if(currByte != -1)
|
||||||
|
result += (char) currByte;
|
||||||
|
}
|
||||||
|
|
||||||
|
fileInputStream.close();
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
catch (Exception e){
|
||||||
|
|
||||||
|
//Print error stack
|
||||||
|
Log.e(TAG, "Couldn't get file content !");
|
||||||
|
e.printStackTrace();
|
||||||
|
|
||||||
|
return ""; //This is a failure
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write something to a file
|
||||||
|
*
|
||||||
|
* @param filename The name of the file to write
|
||||||
|
* @param content The new content of the file
|
||||||
|
* @return FALSE in case of failure
|
||||||
|
*/
|
||||||
|
public boolean file_put_contents(String filename, String content){
|
||||||
|
|
||||||
|
FileOutputStream fileOutputStream;
|
||||||
|
|
||||||
|
try {
|
||||||
|
fileOutputStream = mContext.openFileOutput(filename, Context.MODE_PRIVATE);
|
||||||
|
fileOutputStream.write(content.getBytes());
|
||||||
|
fileOutputStream.close();
|
||||||
|
} catch (Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Success
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,8 +3,6 @@ package org.communiquons.android.comunic.client.data.utils;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import org.communiquons.android.comunic.client.data.utils.Utilities;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -33,7 +31,7 @@ public class ImageLoadUtils {
|
|||||||
* @return The name of the file, composed of characters that can be used in filename
|
* @return The name of the file, composed of characters that can be used in filename
|
||||||
*/
|
*/
|
||||||
public static String get_file_name(String url){
|
public static String get_file_name(String url){
|
||||||
return Utilities.sha1(url);
|
return StringsUtils.sha1(url);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -0,0 +1,63 @@
|
|||||||
|
package org.communiquons.android.comunic.client.data.utils;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Streams utilities
|
||||||
|
*
|
||||||
|
* @author Pierre HUBERT
|
||||||
|
*/
|
||||||
|
public class StreamsUtils {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Transfer all the data coming from an InputStream to an Output Stream
|
||||||
|
*
|
||||||
|
* @param is The Input stream
|
||||||
|
* @param os The output stream
|
||||||
|
*/
|
||||||
|
public static void InputToOutputStream(InputStream is, OutputStream os){
|
||||||
|
|
||||||
|
int read;
|
||||||
|
byte[] bytes = new byte[2048];
|
||||||
|
|
||||||
|
try {
|
||||||
|
while ((read = is.read(bytes)) != -1){
|
||||||
|
os.write(bytes, 0, read);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (IOException e){
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read an InputStream into a string
|
||||||
|
*
|
||||||
|
* @param is The input stream
|
||||||
|
* @return The string
|
||||||
|
*/
|
||||||
|
public static String isToString(InputStream is){
|
||||||
|
|
||||||
|
try {
|
||||||
|
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
|
||||||
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
|
String line;
|
||||||
|
|
||||||
|
while((line = bufferedReader.readLine()) != null){
|
||||||
|
stringBuilder.append(line);
|
||||||
|
}
|
||||||
|
bufferedReader.close();
|
||||||
|
|
||||||
|
//Return the result
|
||||||
|
return stringBuilder.toString();
|
||||||
|
|
||||||
|
} catch (IOException e){
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,13 @@
|
|||||||
package org.communiquons.android.comunic.client.data.utils;
|
package org.communiquons.android.comunic.client.data.utils;
|
||||||
|
|
||||||
|
import android.text.TextUtils;
|
||||||
|
import android.util.Patterns;
|
||||||
|
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import java.security.MessageDigest;
|
||||||
|
import java.security.NoSuchAlgorithmException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Formatter;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
@ -77,4 +84,58 @@ public class StringsUtils {
|
|||||||
|
|
||||||
return stringBuilder.toString();
|
return stringBuilder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether a specified email address is valid or not
|
||||||
|
*
|
||||||
|
* @param mail The E-Mail address to check
|
||||||
|
* @return True if the mail is valid / false else
|
||||||
|
*/
|
||||||
|
public static boolean isValidMail(CharSequence mail){
|
||||||
|
return !TextUtils.isEmpty(mail) && Patterns.EMAIL_ADDRESS.matcher(mail).matches();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate the SHA-1 summary of a given string
|
||||||
|
*
|
||||||
|
* @param source The source string
|
||||||
|
* @return The SHA-1 encoded string
|
||||||
|
*/
|
||||||
|
public static String sha1(String source){
|
||||||
|
|
||||||
|
String sha1;
|
||||||
|
|
||||||
|
try {
|
||||||
|
MessageDigest crypt = MessageDigest.getInstance("SHA-1");
|
||||||
|
crypt.reset();
|
||||||
|
crypt.update(source.getBytes("UTF-8"));
|
||||||
|
sha1 = byteToHex(crypt.digest());
|
||||||
|
} catch (NoSuchAlgorithmException | UnsupportedEncodingException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return sha1;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert an array of bytes into a string
|
||||||
|
*
|
||||||
|
* @param bList The list of bytes
|
||||||
|
* @return The result string
|
||||||
|
*/
|
||||||
|
private static String byteToHex(byte[] bList){
|
||||||
|
|
||||||
|
Formatter formatter = new Formatter();
|
||||||
|
|
||||||
|
for(byte b : bList){
|
||||||
|
formatter.format("%02x", b);
|
||||||
|
}
|
||||||
|
|
||||||
|
String result = formatter.toString();
|
||||||
|
formatter.close();
|
||||||
|
return result;
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,77 @@
|
|||||||
|
package org.communiquons.android.comunic.client.data.utils;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.res.Resources;
|
||||||
|
|
||||||
|
import org.communiquons.android.comunic.client.R;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Time utilities
|
||||||
|
*
|
||||||
|
* @author Pierre HUBERT
|
||||||
|
*/
|
||||||
|
public class TimeUtils {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get current timestamp
|
||||||
|
*
|
||||||
|
* @return The current timestamp
|
||||||
|
*/
|
||||||
|
public static int time(){
|
||||||
|
Date date = new Date();
|
||||||
|
return (int) Math.ceil(date.getTime()/1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Transform an amount of seconds into a string like "3min" or "10hours"s
|
||||||
|
*
|
||||||
|
* @param time The Time to convert
|
||||||
|
* @return Generated string
|
||||||
|
*/
|
||||||
|
public static String TimeToString(Context context, int time){
|
||||||
|
|
||||||
|
Resources res = context.getResources();
|
||||||
|
|
||||||
|
//Check if the time is inferior to 1 => now
|
||||||
|
if(time < 1)
|
||||||
|
return res.getString(R.string.date_now);
|
||||||
|
|
||||||
|
//Less than one minute
|
||||||
|
else if (time < 60){
|
||||||
|
return time + res.getString(R.string.date_s);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Less than one hour
|
||||||
|
else if (time < 3600){
|
||||||
|
int secs = (int) Math.floor(time / 60);
|
||||||
|
return secs + res.getString(R.string.date_m);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Less than a day
|
||||||
|
else if (time < 86400){
|
||||||
|
int hours = (int) Math.floor(time / 3600);
|
||||||
|
return hours + res.getString(R.string.date_h);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Less than a month
|
||||||
|
else if (time < 2678400){
|
||||||
|
int days = (int) Math.floor(time / 86400);
|
||||||
|
return days + res.getString(days > 1 ? R.string.date_days : R.string.date_day);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Less than a year
|
||||||
|
else if (time < 31536000){
|
||||||
|
int months = (int) Math.floor(time / 2678400);
|
||||||
|
return months + res.getString(months > 1 ? R.string.date_months : R.string.date_month);
|
||||||
|
}
|
||||||
|
|
||||||
|
//A several amount of years
|
||||||
|
else {
|
||||||
|
int years = (int) Math.floor(time / 31536000);
|
||||||
|
return years + res.getString(years > 1 ? R.string.date_years : R.string.date_year);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,293 +0,0 @@
|
|||||||
package org.communiquons.android.comunic.client.data.utils;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.res.Resources;
|
|
||||||
import android.os.Build;
|
|
||||||
import android.text.Html;
|
|
||||||
import android.text.TextUtils;
|
|
||||||
import android.util.Log;
|
|
||||||
import android.util.Patterns;
|
|
||||||
|
|
||||||
import org.communiquons.android.comunic.client.R;
|
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.FileOutputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.io.OutputStream;
|
|
||||||
import java.io.UnsupportedEncodingException;
|
|
||||||
import java.security.MessageDigest;
|
|
||||||
import java.security.NoSuchAlgorithmException;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.Formatter;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Application utilities
|
|
||||||
*
|
|
||||||
* @author Pierre HUBERT
|
|
||||||
* Created by pierre on 10/29/17.
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class Utilities {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Application context
|
|
||||||
*/
|
|
||||||
private Context mContext;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Account class constructor
|
|
||||||
*
|
|
||||||
* @param context Context of the application
|
|
||||||
*/
|
|
||||||
public Utilities(Context context){
|
|
||||||
mContext = context;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the content of a file
|
|
||||||
*
|
|
||||||
* @param filename the name of the file to get
|
|
||||||
* @return The content of the file
|
|
||||||
*/
|
|
||||||
public String file_get_content(String filename){
|
|
||||||
|
|
||||||
FileInputStream fileInputStream;
|
|
||||||
|
|
||||||
try {
|
|
||||||
fileInputStream = mContext.openFileInput(filename);
|
|
||||||
|
|
||||||
String result = "";
|
|
||||||
int currByte = 0;
|
|
||||||
while(currByte != -1){
|
|
||||||
|
|
||||||
currByte = fileInputStream.read();
|
|
||||||
|
|
||||||
if(currByte != -1)
|
|
||||||
result += (char) currByte;
|
|
||||||
}
|
|
||||||
|
|
||||||
fileInputStream.close();
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
catch (Exception e){
|
|
||||||
|
|
||||||
//Print error stack
|
|
||||||
Log.e("Utilities", "Couldn't get file content !");
|
|
||||||
e.printStackTrace();
|
|
||||||
|
|
||||||
return ""; //This is a failure
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Write something to a file
|
|
||||||
*
|
|
||||||
* @param filename The name of the file to write
|
|
||||||
* @param content The new content of the file
|
|
||||||
* @return FALSE in case of failure
|
|
||||||
*/
|
|
||||||
public boolean file_put_contents(String filename, String content){
|
|
||||||
|
|
||||||
FileOutputStream fileOutputStream;
|
|
||||||
|
|
||||||
try {
|
|
||||||
fileOutputStream = mContext.openFileOutput(filename, Context.MODE_PRIVATE);
|
|
||||||
fileOutputStream.write(content.getBytes());
|
|
||||||
fileOutputStream.close();
|
|
||||||
} catch (Exception e){
|
|
||||||
e.printStackTrace();
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Success
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check whether a specified email address is valid or not
|
|
||||||
*
|
|
||||||
* @param mail The E-Mail address to check
|
|
||||||
* @return True if the mail is valid / false else
|
|
||||||
*/
|
|
||||||
public static boolean isValidMail(CharSequence mail){
|
|
||||||
return !TextUtils.isEmpty(mail) && Patterns.EMAIL_ADDRESS.matcher(mail).matches();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Generate the SHA-1 summary of a given string
|
|
||||||
*
|
|
||||||
* @param source The source string
|
|
||||||
* @return The SHA-1 encoded string
|
|
||||||
*/
|
|
||||||
public static String sha1(String source){
|
|
||||||
|
|
||||||
String sha1;
|
|
||||||
|
|
||||||
try {
|
|
||||||
MessageDigest crypt = MessageDigest.getInstance("SHA-1");
|
|
||||||
crypt.reset();
|
|
||||||
crypt.update(source.getBytes("UTF-8"));
|
|
||||||
sha1 = byteToHex(crypt.digest());
|
|
||||||
} catch (NoSuchAlgorithmException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
return null;
|
|
||||||
} catch (UnsupportedEncodingException e){
|
|
||||||
e.printStackTrace();
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return sha1;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Convert an array of bytes into a string
|
|
||||||
*
|
|
||||||
* @param bList The list of bytes
|
|
||||||
* @return The result string
|
|
||||||
*/
|
|
||||||
private static String byteToHex(byte[] bList){
|
|
||||||
|
|
||||||
Formatter formatter = new Formatter();
|
|
||||||
|
|
||||||
for(byte b : bList){
|
|
||||||
formatter.format("%02x", b);
|
|
||||||
}
|
|
||||||
|
|
||||||
String result = formatter.toString();
|
|
||||||
formatter.close();
|
|
||||||
return result;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Transfer all the data coming from an InputStream to an Output Stream
|
|
||||||
*
|
|
||||||
* @param is The Input stream
|
|
||||||
* @param os The output stream
|
|
||||||
*/
|
|
||||||
public static void InputToOutputStream(InputStream is, OutputStream os){
|
|
||||||
|
|
||||||
int read = 0;
|
|
||||||
byte[] bytes = new byte[2048];
|
|
||||||
|
|
||||||
try {
|
|
||||||
while ((read = is.read(bytes)) != -1){
|
|
||||||
os.write(bytes, 0, read);
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (IOException e){
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Read an InputStream into a string
|
|
||||||
*
|
|
||||||
* @param is The input stream
|
|
||||||
* @return The string
|
|
||||||
*/
|
|
||||||
public static String isToString(InputStream is){
|
|
||||||
|
|
||||||
try {
|
|
||||||
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
|
|
||||||
StringBuilder stringBuilder = new StringBuilder();
|
|
||||||
String line;
|
|
||||||
|
|
||||||
while((line = bufferedReader.readLine()) != null){
|
|
||||||
stringBuilder.append(line);
|
|
||||||
}
|
|
||||||
bufferedReader.close();
|
|
||||||
|
|
||||||
//Return the result
|
|
||||||
return stringBuilder.toString();
|
|
||||||
|
|
||||||
} catch (IOException e){
|
|
||||||
e.printStackTrace();
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prepare a string sent through the API to be shown in a TextView element
|
|
||||||
*
|
|
||||||
* @param input The string to prepare
|
|
||||||
* @return The string ready to be shown
|
|
||||||
*/
|
|
||||||
public static String prepareStringTextView(String input){
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
|
||||||
return Html.fromHtml(input, Html.FROM_HTML_SEPARATOR_LINE_BREAK_PARAGRAPH).toString();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return Html.fromHtml(input).toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get current timestamp
|
|
||||||
*
|
|
||||||
* @return The current timestamp
|
|
||||||
*/
|
|
||||||
public static int time(){
|
|
||||||
Date date = new Date();
|
|
||||||
return (int) Math.ceil(date.getTime()/1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Transform an amount of seconds into a string like "3min" or "10hours"s
|
|
||||||
*
|
|
||||||
* @param time The Time to convert
|
|
||||||
* @return Generated string
|
|
||||||
*/
|
|
||||||
public String timeToString(int time){
|
|
||||||
|
|
||||||
Resources res = mContext.getResources();
|
|
||||||
|
|
||||||
//Check if the time is inferior to 1 => now
|
|
||||||
if(time < 1)
|
|
||||||
return res.getString(R.string.date_now);
|
|
||||||
|
|
||||||
//Less than one minute
|
|
||||||
else if (time < 60){
|
|
||||||
return time + res.getString(R.string.date_s);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Less than one hour
|
|
||||||
else if (time < 3600){
|
|
||||||
int secs = (int) Math.floor(time / 60);
|
|
||||||
return secs + res.getString(R.string.date_m);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Less than a day
|
|
||||||
else if (time < 86400){
|
|
||||||
int hours = (int) Math.floor(time / 3600);
|
|
||||||
return hours + res.getString(R.string.date_h);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Less than a month
|
|
||||||
else if (time < 2678400){
|
|
||||||
int days = (int) Math.floor(time / 86400);
|
|
||||||
return days + res.getString(days > 1 ? R.string.date_days : R.string.date_day);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Less than a year
|
|
||||||
else if (time < 31536000){
|
|
||||||
int months = (int) Math.floor(time / 2678400);
|
|
||||||
return months + res.getString(months > 1 ? R.string.date_months : R.string.date_month);
|
|
||||||
}
|
|
||||||
|
|
||||||
//A several amount of years
|
|
||||||
else {
|
|
||||||
int years = (int) Math.floor(time / 31536000);
|
|
||||||
return years + res.getString(years > 1 ? R.string.date_years : R.string.date_year);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -17,11 +17,11 @@ import android.widget.TextView;
|
|||||||
|
|
||||||
import org.communiquons.android.comunic.client.BuildConfig;
|
import org.communiquons.android.comunic.client.BuildConfig;
|
||||||
import org.communiquons.android.comunic.client.R;
|
import org.communiquons.android.comunic.client.R;
|
||||||
|
import org.communiquons.android.comunic.client.data.utils.StringsUtils;
|
||||||
import org.communiquons.android.comunic.client.ui.asynctasks.SafeAsyncTask;
|
import org.communiquons.android.comunic.client.ui.asynctasks.SafeAsyncTask;
|
||||||
import org.communiquons.android.comunic.client.data.enums.CreateAccountResult;
|
import org.communiquons.android.comunic.client.data.enums.CreateAccountResult;
|
||||||
import org.communiquons.android.comunic.client.data.helpers.AccountHelper;
|
import org.communiquons.android.comunic.client.data.helpers.AccountHelper;
|
||||||
import org.communiquons.android.comunic.client.data.models.NewAccount;
|
import org.communiquons.android.comunic.client.data.models.NewAccount;
|
||||||
import org.communiquons.android.comunic.client.data.utils.Utilities;
|
|
||||||
|
|
||||||
import static android.os.AsyncTask.Status.FINISHED;
|
import static android.os.AsyncTask.Status.FINISHED;
|
||||||
|
|
||||||
@ -159,7 +159,7 @@ public class CreateAccountActivity extends AppCompatActivity
|
|||||||
cancel = true;
|
cancel = true;
|
||||||
focusView = focusView != null ? focusView : mEmailAddress;
|
focusView = focusView != null ? focusView : mEmailAddress;
|
||||||
}
|
}
|
||||||
else if(!Utilities.isValidMail(email)){
|
else if(!StringsUtils.isValidMail(email)){
|
||||||
mEmailAddress.setError(getString(R.string.err_invalid_email));
|
mEmailAddress.setError(getString(R.string.err_invalid_email));
|
||||||
cancel = true;
|
cancel = true;
|
||||||
focusView = focusView != null ? focusView : mEmailAddress;
|
focusView = focusView != null ? focusView : mEmailAddress;
|
||||||
|
@ -12,11 +12,11 @@ import android.widget.TextView;
|
|||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import org.communiquons.android.comunic.client.R;
|
import org.communiquons.android.comunic.client.R;
|
||||||
|
import org.communiquons.android.comunic.client.data.utils.StringsUtils;
|
||||||
import org.communiquons.android.comunic.client.ui.asynctasks.SafeAsyncTask;
|
import org.communiquons.android.comunic.client.ui.asynctasks.SafeAsyncTask;
|
||||||
import org.communiquons.android.comunic.client.data.enums.LoginResult;
|
import org.communiquons.android.comunic.client.data.enums.LoginResult;
|
||||||
import org.communiquons.android.comunic.client.data.helpers.APIRequestHelper;
|
import org.communiquons.android.comunic.client.data.helpers.APIRequestHelper;
|
||||||
import org.communiquons.android.comunic.client.data.helpers.AccountHelper;
|
import org.communiquons.android.comunic.client.data.helpers.AccountHelper;
|
||||||
import org.communiquons.android.comunic.client.data.utils.Utilities;
|
|
||||||
import org.communiquons.android.comunic.client.ui.asynctasks.LoginTask;
|
import org.communiquons.android.comunic.client.ui.asynctasks.LoginTask;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -109,7 +109,7 @@ public class LoginActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Check email address
|
//Check email address
|
||||||
if(login_mail.length() < 3 || !Utilities.isValidMail(login_mail.getText())){
|
if(login_mail.length() < 3 || !StringsUtils.isValidMail(login_mail.getText())){
|
||||||
login_mail.setError(getString(R.string.activity_login_err_invalid_email));
|
login_mail.setError(getString(R.string.activity_login_err_invalid_email));
|
||||||
login_mail.requestFocus();
|
login_mail.requestFocus();
|
||||||
stop = 1;
|
stop = 1;
|
||||||
|
@ -4,7 +4,6 @@ import android.content.Context;
|
|||||||
import android.support.annotation.CallSuper;
|
import android.support.annotation.CallSuper;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.support.v7.widget.RecyclerView;
|
import android.support.v7.widget.RecyclerView;
|
||||||
import android.util.Log;
|
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
@ -15,7 +14,6 @@ import org.communiquons.android.comunic.client.data.arrays.ConversationMessagesL
|
|||||||
import org.communiquons.android.comunic.client.data.models.ConversationMessage;
|
import org.communiquons.android.comunic.client.data.models.ConversationMessage;
|
||||||
import org.communiquons.android.comunic.client.data.models.UserInfo;
|
import org.communiquons.android.comunic.client.data.models.UserInfo;
|
||||||
import org.communiquons.android.comunic.client.data.utils.StringsUtils;
|
import org.communiquons.android.comunic.client.data.utils.StringsUtils;
|
||||||
import org.communiquons.android.comunic.client.data.utils.Utilities;
|
|
||||||
import org.communiquons.android.comunic.client.ui.listeners.OnConversationMessageActionsListener;
|
import org.communiquons.android.comunic.client.ui.listeners.OnConversationMessageActionsListener;
|
||||||
import org.communiquons.android.comunic.client.ui.views.EnlargeableWebImageView;
|
import org.communiquons.android.comunic.client.ui.views.EnlargeableWebImageView;
|
||||||
import org.communiquons.android.comunic.client.ui.views.WebUserAccountImage;
|
import org.communiquons.android.comunic.client.ui.views.WebUserAccountImage;
|
||||||
@ -60,8 +58,6 @@ public class ConversationMessageAdapter extends RecyclerView.Adapter {
|
|||||||
*/
|
*/
|
||||||
private OnConversationMessageActionsListener mOnConversationMessageActionsListener;
|
private OnConversationMessageActionsListener mOnConversationMessageActionsListener;
|
||||||
|
|
||||||
private Utilities utils;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Public class constructor
|
* Public class constructor
|
||||||
*
|
*
|
||||||
@ -77,8 +73,6 @@ public class ConversationMessageAdapter extends RecyclerView.Adapter {
|
|||||||
this.mContext = context;
|
this.mContext = context;
|
||||||
this.mList = list;
|
this.mList = list;
|
||||||
|
|
||||||
utils = new Utilities(mContext);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -12,7 +12,7 @@ import android.widget.TextView;
|
|||||||
|
|
||||||
import org.communiquons.android.comunic.client.R;
|
import org.communiquons.android.comunic.client.R;
|
||||||
import org.communiquons.android.comunic.client.data.models.ConversationsInfo;
|
import org.communiquons.android.comunic.client.data.models.ConversationsInfo;
|
||||||
import org.communiquons.android.comunic.client.data.utils.Utilities;
|
import org.communiquons.android.comunic.client.data.utils.TimeUtils;
|
||||||
import org.communiquons.android.comunic.client.ui.utils.UiUtils;
|
import org.communiquons.android.comunic.client.ui.utils.UiUtils;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -28,8 +28,6 @@ import java.util.ArrayList;
|
|||||||
|
|
||||||
public class ConversationsListAdapter extends ArrayAdapter<ConversationsInfo> {
|
public class ConversationsListAdapter extends ArrayAdapter<ConversationsInfo> {
|
||||||
|
|
||||||
private Utilities utils;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class constructor
|
* Class constructor
|
||||||
*
|
*
|
||||||
@ -38,8 +36,6 @@ public class ConversationsListAdapter extends ArrayAdapter<ConversationsInfo> {
|
|||||||
*/
|
*/
|
||||||
public ConversationsListAdapter(Context context, ArrayList<ConversationsInfo> list){
|
public ConversationsListAdapter(Context context, ArrayList<ConversationsInfo> list){
|
||||||
super(context, 0, list);
|
super(context, 0, list);
|
||||||
|
|
||||||
utils = new Utilities(context);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -91,7 +87,8 @@ public class ConversationsListAdapter extends ArrayAdapter<ConversationsInfo> {
|
|||||||
//Update the last activity time of the conversation
|
//Update the last activity time of the conversation
|
||||||
TextView last_activity = convertView.
|
TextView last_activity = convertView.
|
||||||
findViewById(R.id.fragment_conversationslist_item_lastactive);
|
findViewById(R.id.fragment_conversationslist_item_lastactive);
|
||||||
last_activity.setText(utils.timeToString(Utilities.time() - infos.getLast_active()));
|
last_activity.setText(TimeUtils.TimeToString(getContext(),
|
||||||
|
TimeUtils.time() - infos.getLast_active()));
|
||||||
|
|
||||||
return convertView;
|
return convertView;
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ import org.communiquons.android.comunic.client.data.models.GroupInfo;
|
|||||||
import org.communiquons.android.comunic.client.data.models.Notif;
|
import org.communiquons.android.comunic.client.data.models.Notif;
|
||||||
import org.communiquons.android.comunic.client.data.models.UserInfo;
|
import org.communiquons.android.comunic.client.data.models.UserInfo;
|
||||||
import org.communiquons.android.comunic.client.data.utils.NotifsUtils;
|
import org.communiquons.android.comunic.client.data.utils.NotifsUtils;
|
||||||
import org.communiquons.android.comunic.client.data.utils.Utilities;
|
import org.communiquons.android.comunic.client.data.utils.TimeUtils;
|
||||||
import org.communiquons.android.comunic.client.ui.views.WebUserAccountImage;
|
import org.communiquons.android.comunic.client.ui.views.WebUserAccountImage;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -28,11 +28,6 @@ import org.communiquons.android.comunic.client.ui.views.WebUserAccountImage;
|
|||||||
|
|
||||||
public class NotificationsAdapter extends ArrayAdapter<Notif>{
|
public class NotificationsAdapter extends ArrayAdapter<Notif>{
|
||||||
|
|
||||||
/**
|
|
||||||
* Utilities
|
|
||||||
*/
|
|
||||||
private Utilities mUtils;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Information about the users of the notifications
|
* Information about the users of the notifications
|
||||||
*/
|
*/
|
||||||
@ -55,8 +50,6 @@ public class NotificationsAdapter extends ArrayAdapter<Notif>{
|
|||||||
//Save users and groups information
|
//Save users and groups information
|
||||||
mUsersInfo = list.getUsersInfo();
|
mUsersInfo = list.getUsersInfo();
|
||||||
mGroupsInfo = list.getGroupsInfo();
|
mGroupsInfo = list.getGroupsInfo();
|
||||||
|
|
||||||
mUtils = new Utilities(context);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
@ -84,7 +77,8 @@ public class NotificationsAdapter extends ArrayAdapter<Notif>{
|
|||||||
|
|
||||||
//Update the date of the notification
|
//Update the date of the notification
|
||||||
TextView date = convertView.findViewById(R.id.notification_date);
|
TextView date = convertView.findViewById(R.id.notification_date);
|
||||||
date.setText(mUtils.timeToString(Utilities.time() - notif.getTime_create()));
|
date.setText(TimeUtils.TimeToString(getContext(),
|
||||||
|
TimeUtils.time() - notif.getTime_create()));
|
||||||
|
|
||||||
return convertView;
|
return convertView;
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ import org.communiquons.android.comunic.client.data.enums.PageType;
|
|||||||
import org.communiquons.android.comunic.client.data.models.Comment;
|
import org.communiquons.android.comunic.client.data.models.Comment;
|
||||||
import org.communiquons.android.comunic.client.data.models.Post;
|
import org.communiquons.android.comunic.client.data.models.Post;
|
||||||
import org.communiquons.android.comunic.client.data.models.UserInfo;
|
import org.communiquons.android.comunic.client.data.models.UserInfo;
|
||||||
import org.communiquons.android.comunic.client.data.utils.Utilities;
|
import org.communiquons.android.comunic.client.data.utils.TimeUtils;
|
||||||
import org.communiquons.android.comunic.client.ui.listeners.onPostUpdateListener;
|
import org.communiquons.android.comunic.client.ui.listeners.onPostUpdateListener;
|
||||||
import org.communiquons.android.comunic.client.ui.utils.UiUtils;
|
import org.communiquons.android.comunic.client.ui.utils.UiUtils;
|
||||||
import org.communiquons.android.comunic.client.ui.views.CountDownView;
|
import org.communiquons.android.comunic.client.ui.views.CountDownView;
|
||||||
@ -68,12 +68,6 @@ public class PostsAdapter extends BaseRecyclerViewAdapter {
|
|||||||
*/
|
*/
|
||||||
private boolean mDisplayPostsTarget = true;
|
private boolean mDisplayPostsTarget = true;
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Utilities object
|
|
||||||
*/
|
|
||||||
private Utilities mUtils;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Actions update listener
|
* Actions update listener
|
||||||
*/
|
*/
|
||||||
@ -92,9 +86,6 @@ public class PostsAdapter extends BaseRecyclerViewAdapter {
|
|||||||
|
|
||||||
mList = list;
|
mList = list;
|
||||||
|
|
||||||
//Utilities
|
|
||||||
mUtils = new Utilities(getContext());
|
|
||||||
|
|
||||||
mListener = listener;
|
mListener = listener;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -276,7 +267,8 @@ public class PostsAdapter extends BaseRecyclerViewAdapter {
|
|||||||
|
|
||||||
|
|
||||||
//Post date
|
//Post date
|
||||||
mPostDate.setText(mUtils.timeToString(Utilities.time() - post.getPost_time()));
|
mPostDate.setText(TimeUtils.TimeToString(getContext(),
|
||||||
|
TimeUtils.time() - post.getPost_time()));
|
||||||
|
|
||||||
|
|
||||||
//Display post visibility
|
//Display post visibility
|
||||||
@ -314,7 +306,7 @@ public class PostsAdapter extends BaseRecyclerViewAdapter {
|
|||||||
|
|
||||||
|
|
||||||
//Set post content
|
//Set post content
|
||||||
mPostContent.setText(Utilities.prepareStringTextView(post.getContent()));
|
mPostContent.setText(UiUtils.prepareStringTextView(post.getContent()));
|
||||||
|
|
||||||
|
|
||||||
//Post likes
|
//Post likes
|
||||||
|
@ -12,7 +12,7 @@ import android.widget.TextView;
|
|||||||
import org.communiquons.android.comunic.client.R;
|
import org.communiquons.android.comunic.client.R;
|
||||||
import org.communiquons.android.comunic.client.data.models.AdvancedUserInfo;
|
import org.communiquons.android.comunic.client.data.models.AdvancedUserInfo;
|
||||||
import org.communiquons.android.comunic.client.data.utils.AccountUtils;
|
import org.communiquons.android.comunic.client.data.utils.AccountUtils;
|
||||||
import org.communiquons.android.comunic.client.data.utils.Utilities;
|
import org.communiquons.android.comunic.client.data.utils.TimeUtils;
|
||||||
import org.communiquons.android.comunic.client.ui.views.FriendshipStatusButton;
|
import org.communiquons.android.comunic.client.ui.views.FriendshipStatusButton;
|
||||||
import org.communiquons.android.comunic.client.ui.views.WebUserAccountImage;
|
import org.communiquons.android.comunic.client.ui.views.WebUserAccountImage;
|
||||||
|
|
||||||
@ -93,8 +93,8 @@ public class AdvancedUserInfoFragment extends Fragment {
|
|||||||
//Apply user information
|
//Apply user information
|
||||||
mUserAccountImage.setUser(mAdvancedUserInfo);
|
mUserAccountImage.setUser(mAdvancedUserInfo);
|
||||||
mUserName.setText(mAdvancedUserInfo.getDisplayFullName());
|
mUserName.setText(mAdvancedUserInfo.getDisplayFullName());
|
||||||
mMemberSinceTarget.setText(new Utilities(getActivity()).timeToString(
|
mMemberSinceTarget.setText(TimeUtils.TimeToString(getActivity(),
|
||||||
Utilities.time() - mAdvancedUserInfo.getAccount_creation_time()));
|
TimeUtils.time() - mAdvancedUserInfo.getAccount_creation_time()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -4,6 +4,7 @@ import android.app.AlertDialog;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
import android.text.Html;
|
||||||
import android.util.TypedValue;
|
import android.util.TypedValue;
|
||||||
|
|
||||||
import org.communiquons.android.comunic.client.R;
|
import org.communiquons.android.comunic.client.R;
|
||||||
@ -96,4 +97,18 @@ public class UiUtils {
|
|||||||
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp,
|
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp,
|
||||||
context.getResources().getDisplayMetrics());
|
context.getResources().getDisplayMetrics());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prepare a string sent through the API to be shown in a TextView element
|
||||||
|
*
|
||||||
|
* @param input The string to prepare
|
||||||
|
* @return The string ready to be shown
|
||||||
|
*/
|
||||||
|
public static String prepareStringTextView(String input){
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||||
|
return Html.fromHtml(input, Html.FROM_HTML_SEPARATOR_LINE_BREAK_PARAGRAPH).toString();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return Html.fromHtml(input).toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ import android.widget.TextView;
|
|||||||
|
|
||||||
import org.communiquons.android.comunic.client.R;
|
import org.communiquons.android.comunic.client.R;
|
||||||
import org.communiquons.android.comunic.client.data.utils.StringsUtils;
|
import org.communiquons.android.comunic.client.data.utils.StringsUtils;
|
||||||
import org.communiquons.android.comunic.client.data.utils.Utilities;
|
import org.communiquons.android.comunic.client.data.utils.TimeUtils;
|
||||||
import org.communiquons.android.comunic.client.ui.utils.UiUtils;
|
import org.communiquons.android.comunic.client.ui.utils.UiUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -53,7 +53,7 @@ public class CountDownView extends BaseFrameLayoutView {
|
|||||||
public void setTime_end(final int time_end) {
|
public void setTime_end(final int time_end) {
|
||||||
this.time_end = time_end;
|
this.time_end = time_end;
|
||||||
|
|
||||||
final int remaining = time_end - Utilities.time();
|
final int remaining = time_end - TimeUtils.time();
|
||||||
|
|
||||||
if(mTimer != null)
|
if(mTimer != null)
|
||||||
mTimer.cancel();
|
mTimer.cancel();
|
||||||
@ -68,7 +68,7 @@ public class CountDownView extends BaseFrameLayoutView {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onTick(long millisUntilFinished) {
|
public void onTick(long millisUntilFinished) {
|
||||||
mTimerView.setText(timeToString(time_end - Utilities.time()));
|
mTimerView.setText(timeToString(time_end - TimeUtils.time()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
Reference in New Issue
Block a user