diff --git a/app/build.gradle b/app/build.gradle index cac723981..cf10cc999 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -40,7 +40,6 @@ dependencies { annotationProcessor 'com.github.bumptech.glide:compiler:4.3.1' implementation 'com.evernote:android-job:1.2.1' implementation 'com.github.chrisbanes:PhotoView:2.0.0' - implementation 'com.google.code.gson:gson:2.8.0' implementation 'org.jsoup:jsoup:1.10.3' implementation 'com.github.stom79:country-picker-android:1.2.0' implementation 'com.github.stom79:mytransl:1.2' diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java index afe8a8b04..788e4ebf7 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java @@ -17,6 +17,7 @@ package fr.gouv.etalab.mastodon.client.Entities; import android.os.Parcel; import android.os.Parcelable; +import java.io.Serializable; import java.util.Date; /** @@ -24,7 +25,7 @@ import java.util.Date; * Manage accounts */ -public class Account implements Parcelable { +public class Account implements Parcelable, Serializable { private String id; private String username; diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Application.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Application.java index 41093cc51..5684056a6 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Application.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Application.java @@ -14,11 +14,13 @@ * see . */ package fr.gouv.etalab.mastodon.client.Entities; +import java.io.Serializable; + /** * Created by Thomas on 23/04/2017. */ -public class Application { +public class Application implements Serializable { public String name; public String website; diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Attachment.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Attachment.java index 6c36a6b39..7d313314b 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Attachment.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Attachment.java @@ -17,12 +17,14 @@ package fr.gouv.etalab.mastodon.client.Entities; import android.os.Parcel; import android.os.Parcelable; +import java.io.Serializable; + /** * Created by Thomas on 23/04/2017. * Manages Media */ -public class Attachment implements Parcelable { +public class Attachment implements Parcelable, Serializable{ private String id; private String type; diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Emojis.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Emojis.java index b50d76e7e..2de25e5ae 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Emojis.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Emojis.java @@ -14,11 +14,13 @@ * see . */ package fr.gouv.etalab.mastodon.client.Entities; +import java.io.Serializable; + /** * Created by Thomas on 20/10/2017. */ -public class Emojis { +public class Emojis implements Serializable { private String shortcode; private String static_url; diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Mention.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Mention.java index 61dbf5f4e..3f74d7a7d 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Mention.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Mention.java @@ -17,12 +17,14 @@ package fr.gouv.etalab.mastodon.client.Entities; import android.os.Parcel; import android.os.Parcelable; +import java.io.Serializable; + /** * Created by Thomas on 23/04/2017. * Manages mentions in toots */ -public class Mention implements Parcelable { +public class Mention implements Parcelable, Serializable { private String url; private String username; diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Status.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Status.java index 315243f5b..7db3ae6df 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Status.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Status.java @@ -42,6 +42,7 @@ import com.bumptech.glide.request.target.SimpleTarget; import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.transition.Transition; +import java.io.Serializable; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -60,7 +61,7 @@ import fr.gouv.etalab.mastodon.sqlite.Sqlite; * Manage Status (ie: toots) */ -public class Status implements Parcelable { +public class Status implements Parcelable, Serializable{ private String id; private String uri; diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Tag.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Tag.java index ec5bba3e8..dd47bc355 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Tag.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Tag.java @@ -14,12 +14,14 @@ * see . */ package fr.gouv.etalab.mastodon.client.Entities; +import java.io.Serializable; + /** * Created by Thomas on 23/04/2017. * Manage Tags */ -public class Tag { +public class Tag implements Serializable { private String name; private String url; diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java index 16fd272a5..e0eca5a8c 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java @@ -66,6 +66,7 @@ import android.text.SpannableString; import android.text.Spanned; import android.text.TextPaint; import android.text.style.ClickableSpan; +import android.util.Base64; import android.util.DisplayMetrics; import android.util.Patterns; import android.view.Menu; @@ -91,9 +92,9 @@ import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.target.SimpleTarget; import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.transition.Transition; -import com.google.gson.Gson; import java.io.BufferedReader; +import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; @@ -101,7 +102,10 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; import java.io.OutputStream; +import java.io.UnsupportedEncodingException; import java.net.InetAddress; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; @@ -129,11 +133,8 @@ import fr.gouv.etalab.mastodon.activities.WebviewActivity; import fr.gouv.etalab.mastodon.asynctasks.RemoveAccountAsyncTask; import fr.gouv.etalab.mastodon.client.API; import fr.gouv.etalab.mastodon.client.Entities.Account; -import fr.gouv.etalab.mastodon.client.Entities.Emojis; -import fr.gouv.etalab.mastodon.client.Entities.Mention; import fr.gouv.etalab.mastodon.client.Entities.Results; import fr.gouv.etalab.mastodon.client.Entities.Status; -import fr.gouv.etalab.mastodon.interfaces.OnRetrieveEmojiInterface; import fr.gouv.etalab.mastodon.sqlite.AccountDAO; import fr.gouv.etalab.mastodon.sqlite.Sqlite; @@ -1510,8 +1511,17 @@ public class Helper { * @return String serialized Status */ public static String statusToStringStorage(Status status){ - Gson gson = new Gson(); - return gson.toJson(status); + String serialized = null; + try { + ByteArrayOutputStream bo = new ByteArrayOutputStream(); + ObjectOutputStream so = new ObjectOutputStream(bo); + so.writeObject(status); + so.flush(); + serialized = new String(Base64.encode(bo.toByteArray(), Base64.DEFAULT)); + } catch (IOException e) { + e.printStackTrace(); + } + return serialized; } /** @@ -1520,8 +1530,24 @@ public class Helper { * @return Status */ public static Status restoreStatusFromString(String serializedStatus){ - Gson gson = new Gson(); - return gson.fromJson(serializedStatus, Status.class); + Status status = null; + if(serializedStatus == null) + return null; + byte b[]; + try { + b = Base64.decode(serializedStatus.getBytes(), Base64.DEFAULT); + ByteArrayInputStream bi = new ByteArrayInputStream(b); + ObjectInputStream si = new ObjectInputStream(bi); + status = (Status) si.readObject(); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + return status; + } /** diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/sqlite/StatusStoredDAO.java b/app/src/main/java/fr/gouv/etalab/mastodon/sqlite/StatusStoredDAO.java index f33324616..2d0953ba1 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/sqlite/StatusStoredDAO.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/sqlite/StatusStoredDAO.java @@ -19,6 +19,7 @@ import android.content.Context; import android.content.SharedPreferences; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; + import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -70,7 +71,6 @@ public class StatusStoredDAO { values.put(Sqlite.COL_INSTANCE, instance); values.put(Sqlite.COL_USER_ID, userId); values.put(Sqlite.COL_SENT, 0); - //Inserts stored status long last_id; try{ @@ -208,6 +208,7 @@ public class StatusStoredDAO { Cursor c = db.query(Sqlite.TABLE_STATUSES_STORED, null, Sqlite.COL_USER_ID + " = '" + userId+ "' AND " + Sqlite.COL_INSTANCE + " = '" + instance+ "' AND " + Sqlite.COL_IS_SCHEDULED + " = 0", null, null, null, Sqlite.COL_DATE_CREATION + " DESC", null); return cursorToListStatuses(c); } catch (Exception e) { + e.printStackTrace(); return null; } }