From c054164548732df768d694350055ba08c364774a Mon Sep 17 00:00:00 2001 From: Iyxan23 Date: Thu, 4 Feb 2021 10:57:27 +0700 Subject: [PATCH 01/67] fix: Show only open source projects --- .../java/com/iyxan23/sketch/collab/online/BrowseActivity.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/iyxan23/sketch/collab/online/BrowseActivity.java b/app/src/main/java/com/iyxan23/sketch/collab/online/BrowseActivity.java index 7b48034..6b93da7 100644 --- a/app/src/main/java/com/iyxan23/sketch/collab/online/BrowseActivity.java +++ b/app/src/main/java/com/iyxan23/sketch/collab/online/BrowseActivity.java @@ -62,7 +62,8 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { // TODO: RECYCLERVIEW PAGINATION new Thread(() -> { - Task task = projects.get(); + // Only show open source projects + Task task = projects.whereEqualTo("open", true).get(); try { Tasks.await(task); From 7de8d7cacdc3ebb1e1a1b03e01e27585515af420 Mon Sep 17 00:00:00 2001 From: Iyxan23 Date: Sat, 6 Feb 2021 13:38:49 +0700 Subject: [PATCH 02/67] feat: Better relative time --- .../java/com/iyxan23/sketch/collab/adapters/CommitAdapter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/iyxan23/sketch/collab/adapters/CommitAdapter.java b/app/src/main/java/com/iyxan23/sketch/collab/adapters/CommitAdapter.java index 54829c7..18ad5b2 100644 --- a/app/src/main/java/com/iyxan23/sketch/collab/adapters/CommitAdapter.java +++ b/app/src/main/java/com/iyxan23/sketch/collab/adapters/CommitAdapter.java @@ -79,7 +79,7 @@ public void onBindViewHolder(@NonNull final ViewHolder holder, final int positio // https://stackoverflow.com/questions/11275034/android-calculating-minutes-hours-days-from-point-in-time CharSequence relativeTimeStr = DateUtils.getRelativeTimeSpanString( - item.timestamp.getSeconds() * 1000, + item.timestamp.getNanoseconds() / 1000, System.currentTimeMillis(), DateUtils.SECOND_IN_MILLIS, DateUtils.FORMAT_ABBREV_RELATIVE From 4c8b049de4ddc2c5f5003f5f56996ab657217208 Mon Sep 17 00:00:00 2001 From: Iyxan23 Date: Sat, 6 Feb 2021 13:39:09 +0700 Subject: [PATCH 03/67] feat: Add BottomSheetDialog to Commit --- .../sketch/collab/adapters/CommitAdapter.java | 39 ++++++++ .../main/res/layout/bottomsheet_commit.xml | 95 +++++++++++++++++++ 2 files changed, 134 insertions(+) create mode 100644 app/src/main/res/layout/bottomsheet_commit.xml diff --git a/app/src/main/java/com/iyxan23/sketch/collab/adapters/CommitAdapter.java b/app/src/main/java/com/iyxan23/sketch/collab/adapters/CommitAdapter.java index 18ad5b2..c3ed48d 100644 --- a/app/src/main/java/com/iyxan23/sketch/collab/adapters/CommitAdapter.java +++ b/app/src/main/java/com/iyxan23/sketch/collab/adapters/CommitAdapter.java @@ -14,6 +14,7 @@ import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; +import com.google.android.material.bottomsheet.BottomSheetDialog; import com.google.firebase.Timestamp; import com.google.firebase.firestore.DocumentSnapshot; import com.iyxan23.sketch.collab.R; @@ -86,6 +87,44 @@ public void onBindViewHolder(@NonNull final ViewHolder holder, final int positio ); holder.timestamp.setText(relativeTimeStr); + + holder.body.setOnClickListener(v -> { + // Show a bottomsheet + View bottom_sheet_view = LayoutInflater + .from(v.getContext()) + .inflate(R.layout.bottomsheet_commit, null); + + BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(v.getContext()); + + TextView title = bottom_sheet_view.findViewById(R.id.commit_title); + TextView author = bottom_sheet_view.findViewById(R.id.commit_author); + TextView code = bottom_sheet_view.findViewById(R.id.patch_code); + TextView time = bottom_sheet_view.findViewById(R.id.commit_time); + + title.setText(item.name); + author.setText(item.author_username + " (Commit ID: " + item.id + ")"); + + StringBuilder patch = new StringBuilder(); + + for (String key: item.patch.keySet()) { + patch.append(key).append(":\n").append(item.patch.get(key)); + } + + code.setText(patch.toString()); + + CharSequence relativeTimeStr_ = + DateUtils.getRelativeTimeSpanString( + item.timestamp.getNanoseconds() / 1000, + System.currentTimeMillis(), + + DateUtils.SECOND_IN_MILLIS, DateUtils.FORMAT_ABBREV_RELATIVE + ); + + time.setText(relativeTimeStr_); + + bottomSheetDialog.setContentView(bottom_sheet_view); + bottomSheetDialog.show(); + }); } @Override diff --git a/app/src/main/res/layout/bottomsheet_commit.xml b/app/src/main/res/layout/bottomsheet_commit.xml new file mode 100644 index 0000000..fc0c124 --- /dev/null +++ b/app/src/main/res/layout/bottomsheet_commit.xml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 5ade8ab2f405baac53d32bba5bfa9d8f61b930be Mon Sep 17 00:00:00 2001 From: Iyxan23 Date: Sat, 6 Feb 2021 14:28:45 +0700 Subject: [PATCH 04/67] feat: Add commit_history --- .../collab/online/BrowseCodeActivity.java | 4 ++++ app/src/main/res/drawable/ic_history.xml | 5 +++++ .../main/res/layout/activity_browse_code.xml | 18 +++++++++++++++++- 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 app/src/main/res/drawable/ic_history.xml diff --git a/app/src/main/java/com/iyxan23/sketch/collab/online/BrowseCodeActivity.java b/app/src/main/java/com/iyxan23/sketch/collab/online/BrowseCodeActivity.java index 872dbd6..114396f 100644 --- a/app/src/main/java/com/iyxan23/sketch/collab/online/BrowseCodeActivity.java +++ b/app/src/main/java/com/iyxan23/sketch/collab/online/BrowseCodeActivity.java @@ -155,4 +155,8 @@ public void chevron_resource(View view) { // Rotate the chevron 180 degree(s) view.setRotation((view.getRotation() + 180) % 360); } + + public void open_commit_history(View view) { + + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_history.xml b/app/src/main/res/drawable/ic_history.xml new file mode 100644 index 0000000..98a8216 --- /dev/null +++ b/app/src/main/res/drawable/ic_history.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout/activity_browse_code.xml b/app/src/main/res/layout/activity_browse_code.xml index b1b8b8a..71e1018 100644 --- a/app/src/main/res/layout/activity_browse_code.xml +++ b/app/src/main/res/layout/activity_browse_code.xml @@ -43,15 +43,31 @@ + + Date: Sat, 6 Feb 2021 14:28:54 +0700 Subject: [PATCH 05/67] add: Add PatchHelper --- .../java/com/iyxan23/sketch/collab/helpers/PatchHelper.java | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 app/src/main/java/com/iyxan23/sketch/collab/helpers/PatchHelper.java diff --git a/app/src/main/java/com/iyxan23/sketch/collab/helpers/PatchHelper.java b/app/src/main/java/com/iyxan23/sketch/collab/helpers/PatchHelper.java new file mode 100644 index 0000000..549045a --- /dev/null +++ b/app/src/main/java/com/iyxan23/sketch/collab/helpers/PatchHelper.java @@ -0,0 +1,4 @@ +package com.iyxan23.sketch.collab.helpers; + +public class PatchHelper { +} From f32ea97b7d8a5dafd2099f4e6483b49f3684f58f Mon Sep 17 00:00:00 2001 From: Iyxan23 Date: Sat, 6 Feb 2021 15:00:12 +0700 Subject: [PATCH 06/67] add: Add reverse_patch() --- .../sketch/collab/helpers/PatchHelper.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/java/com/iyxan23/sketch/collab/helpers/PatchHelper.java b/app/src/main/java/com/iyxan23/sketch/collab/helpers/PatchHelper.java index 549045a..1a6747f 100644 --- a/app/src/main/java/com/iyxan23/sketch/collab/helpers/PatchHelper.java +++ b/app/src/main/java/com/iyxan23/sketch/collab/helpers/PatchHelper.java @@ -1,4 +1,28 @@ package com.iyxan23.sketch.collab.helpers; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + public class PatchHelper { + + public static String reverse_patch(String patch) { + Pattern plus_pattern = Pattern.compile("^\\+", Pattern.MULTILINE); + Pattern minus_pattern = Pattern.compile("^-", Pattern.MULTILINE); + + StringBuilder patch_sb = new StringBuilder(patch); + + // Flip + to - + Matcher matcher = plus_pattern.matcher(patch); + while (matcher.find()) { + patch_sb.setCharAt(matcher.start(), '-'); + } + + // Flip - to + + matcher = minus_pattern.matcher(patch); + while (matcher.find()) { + patch_sb.setCharAt(matcher.start(), '+'); + } + + return patch_sb.toString(); + } } From 3bf5d2ee43302c307081c66caf135cd9c5c56462 Mon Sep 17 00:00:00 2001 From: Iyxan23 Date: Sat, 6 Feb 2021 20:08:16 +0700 Subject: [PATCH 07/67] add: Add go_to_commit() --- .../sketch/collab/helpers/PatchHelper.java | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/app/src/main/java/com/iyxan23/sketch/collab/helpers/PatchHelper.java b/app/src/main/java/com/iyxan23/sketch/collab/helpers/PatchHelper.java index 1a6747f..5263a67 100644 --- a/app/src/main/java/com/iyxan23/sketch/collab/helpers/PatchHelper.java +++ b/app/src/main/java/com/iyxan23/sketch/collab/helpers/PatchHelper.java @@ -1,8 +1,16 @@ package com.iyxan23.sketch.collab.helpers; +import com.iyxan23.sketch.collab.models.Commit; +import com.iyxan23.sketch.collab.models.SketchwareProject; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedList; import java.util.regex.Matcher; import java.util.regex.Pattern; +import name.fraser.neil.plaintext.diff_match_patch; + public class PatchHelper { public static String reverse_patch(String patch) { @@ -25,4 +33,66 @@ public static String reverse_patch(String patch) { return patch_sb.toString(); } + + /** + * This function basically jumps the current patch level to another patch level + * + * @param current The current sketchware project in hashmap + * @param commits ArrayList of commits (should be in a ascending sorted order) + * @param commit_current The current commit index + * @param commit_destination The destination commit index + * @return The current string but in the destination commit index + */ + public static HashMap go_to_commit(HashMap current, ArrayList commits, int commit_current, int commit_destination) { + if (commit_destination >= commits.size()) + throw new IndexOutOfBoundsException("commit_destination shouldn't be bigger than commits size"); + + HashMap project_data = current; + + String[] project_keys = new String[] {"mysc_project", "logic", "view", "library", "resource", "file"}; + + diff_match_patch dmp = new diff_match_patch(); + + if (commit_destination > commit_current) { + // The destination is above us, apply commits that are above the current commit + for (Commit commit: commits.subList(commit_current - 1, commit_destination)) { + if (commit.patch == null) + continue; + + for (String key: project_keys) { + if (!commit.patch.containsKey(key)) continue; + + LinkedList patches = (LinkedList) dmp.patch_fromText(commit.patch.get(key)); + // TODO: CHECK PATCH STATUSES + Object[] result = dmp.patch_apply(patches, project_data.get(key)); + + project_data.put(key, (String) result[0]); + } + } + } else if (commit_destination < commit_current) { + // The destination is below us, apply commits downward + for (Commit commit: commits.subList(commit_destination, commit_current - 1)) { + if (commit.patch == null) + continue; + + for (String key: project_keys) { + if (!commit.patch.containsKey(key)) continue; + + // Reverse the patch coz we're going downward + String reversed_patch = reverse_patch(commit.patch.get(key)); + + LinkedList patches = (LinkedList) dmp.patch_fromText(reversed_patch); + // TODO: CHECK PATCH STATUSES + Object[] result = dmp.patch_apply(patches, project_data.get(key)); + + project_data.put(key, (String) result[0]); + } + } + } else { + return current; + } + + // Return the final product + return project_data; + } } From 9d00a3faa212d0d44a3c9e8fd4e020c9d74e9592 Mon Sep 17 00:00:00 2001 From: Iyxan23 Date: Sat, 6 Feb 2021 20:08:37 +0700 Subject: [PATCH 08/67] feat: Add jump-to-commit feature --- .../collab/online/BrowseCodeActivity.java | 73 ++++++++++++++++--- 1 file changed, 63 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/iyxan23/sketch/collab/online/BrowseCodeActivity.java b/app/src/main/java/com/iyxan23/sketch/collab/online/BrowseCodeActivity.java index 114396f..50cc1f3 100644 --- a/app/src/main/java/com/iyxan23/sketch/collab/online/BrowseCodeActivity.java +++ b/app/src/main/java/com/iyxan23/sketch/collab/online/BrowseCodeActivity.java @@ -1,13 +1,16 @@ package com.iyxan23.sketch.collab.online; +import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import android.annotation.SuppressLint; +import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.view.View; +import android.widget.ArrayAdapter; import android.widget.TextView; import android.widget.Toast; @@ -21,12 +24,15 @@ import com.google.firebase.firestore.Source; import com.iyxan23.sketch.collab.R; import com.iyxan23.sketch.collab.Util; +import com.iyxan23.sketch.collab.helpers.PatchHelper; +import com.iyxan23.sketch.collab.models.Commit; import com.iyxan23.sketch.collab.models.SketchwareProject; import org.json.JSONException; import org.json.JSONObject; import java.io.IOException; +import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedList; import java.util.concurrent.ExecutionException; @@ -41,6 +47,14 @@ public class BrowseCodeActivity extends AppCompatActivity { TextView code_library; TextView code_resource; + ArrayList c_commits = new ArrayList<>(); + ArrayList commit_ids = new ArrayList<>(); + + // Project data in their decrypted string format + HashMap project_data = new HashMap<>(); + + int current_commit_index; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -67,9 +81,6 @@ protected void onCreate(Bundle savedInstanceState) { CollectionReference project_snapshot = firestore.collection("projects").document(project_key).collection("snapshot"); CollectionReference project_commits = firestore.collection("projects").document(project_key).collection("commits"); - // Project data in their decrypted string format - HashMap project_data = new HashMap<>(); - String[] keys = new String[] {"mysc_project", "logic", "view", "library", "resource", "file"}; // Get the snapshot, get the commits, and apply the commits to the snapshot @@ -81,8 +92,13 @@ protected void onCreate(Bundle savedInstanceState) { } diff_match_patch dmp = new diff_match_patch(); + + int index = -1; // -1 coz we're adding the index in the start of the loop + // Apply the patch for (DocumentSnapshot commit: commits) { + index++; + HashMap patch = (HashMap) commit.get("patch"); if (patch == null) continue; @@ -96,21 +112,28 @@ protected void onCreate(Bundle savedInstanceState) { project_data.put(key, (String) result[0]); } + + // Also save the commits, we can use this for the commit history jumping + Commit c = new Commit(); + + c.id = commit.getId(); + c.patch = patch; + + c_commits.add(c); + + // Ah yes, save it to the index so we can find a commit faster + commit_ids.add(commit.getId()); } - runOnUiThread(() -> { - code_logic.setText(project_data.get("logic")); - code_view.setText(project_data.get("view")); - code_file.setText(project_data.get("file")); - code_library.setText(project_data.get("library")); - code_resource.setText(project_data.get("resource")); - }); + updateCode(project_data); } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); Toast.makeText(this, "An error occured: " + e.getMessage(), Toast.LENGTH_SHORT).show(); } + + current_commit_index = commit_ids.size() - 1; }).start(); } @@ -156,7 +179,37 @@ public void chevron_resource(View view) { view.setRotation((view.getRotation() + 180) % 360); } + private void updateCode(HashMap project_data) { + runOnUiThread(() -> { + code_logic.setText(project_data.get("logic")); + code_view.setText(project_data.get("view")); + code_file.setText(project_data.get("file")); + code_library.setText(project_data.get("library")); + code_resource.setText(project_data.get("resource")); + }); + } + public void open_commit_history(View view) { + AlertDialog.Builder builderSingle = new AlertDialog.Builder(this); + builderSingle.setTitle("Select a commit to jump into: "); + + final ArrayAdapter arrayAdapter = new ArrayAdapter<>(this, android.R.layout.select_dialog_singlechoice); + arrayAdapter.addAll(commit_ids); + + builderSingle.setNegativeButton("Cancel", (dialog, which) -> dialog.dismiss()); + + builderSingle.setAdapter(arrayAdapter, (dialog, which) -> { + Toast.makeText(this, "Please wait", Toast.LENGTH_SHORT).show(); + + new Thread(() -> { + PatchHelper.go_to_commit(project_data, c_commits, current_commit_index, which); + + current_commit_index = which; + + runOnUiThread(dialog::dismiss); + }).start(); + }); + builderSingle.show(); } } \ No newline at end of file From 1ac399168435ab6f6d398a8627336169772c7c9a Mon Sep 17 00:00:00 2001 From: Iyxan23 Date: Sun, 7 Feb 2021 08:45:42 +0700 Subject: [PATCH 09/67] fix: Update the code --- .../com/iyxan23/sketch/collab/online/BrowseCodeActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/iyxan23/sketch/collab/online/BrowseCodeActivity.java b/app/src/main/java/com/iyxan23/sketch/collab/online/BrowseCodeActivity.java index 50cc1f3..ecab203 100644 --- a/app/src/main/java/com/iyxan23/sketch/collab/online/BrowseCodeActivity.java +++ b/app/src/main/java/com/iyxan23/sketch/collab/online/BrowseCodeActivity.java @@ -202,7 +202,7 @@ public void open_commit_history(View view) { Toast.makeText(this, "Please wait", Toast.LENGTH_SHORT).show(); new Thread(() -> { - PatchHelper.go_to_commit(project_data, c_commits, current_commit_index, which); + updateCode(PatchHelper.go_to_commit(project_data, c_commits, current_commit_index, which)); current_commit_index = which; From a71f59954278ab65bb90a4eb2da63cad4694f841 Mon Sep 17 00:00:00 2001 From: Iyxan23 Date: Sun, 7 Feb 2021 09:34:41 +0700 Subject: [PATCH 10/67] fix: Fix crash when doing toast --- .../com/iyxan23/sketch/collab/online/BrowseActivity.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/iyxan23/sketch/collab/online/BrowseActivity.java b/app/src/main/java/com/iyxan23/sketch/collab/online/BrowseActivity.java index 6b93da7..91c8c47 100644 --- a/app/src/main/java/com/iyxan23/sketch/collab/online/BrowseActivity.java +++ b/app/src/main/java/com/iyxan23/sketch/collab/online/BrowseActivity.java @@ -69,11 +69,11 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { Tasks.await(task); } catch (ExecutionException | InterruptedException e) { e.printStackTrace(); - Toast.makeText(BrowseActivity.this, "An error occured while fetching data: " + task.getException().getMessage(), Toast.LENGTH_LONG).show(); + runOnUiThread(() -> Toast.makeText(BrowseActivity.this, "An error occured while fetching data: " + task.getException().getMessage(), Toast.LENGTH_LONG).show()); } if (!task.isSuccessful()) { - Toast.makeText(BrowseActivity.this, "An error occured while retrieving data: " + task.getException().getMessage(), Toast.LENGTH_LONG).show(); + runOnUiThread(() -> Toast.makeText(BrowseActivity.this, "An error occured while retrieving data: " + task.getException().getMessage(), Toast.LENGTH_LONG).show()); return; } @@ -96,7 +96,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { Tasks.await(userdata_fetch); if (!userdata_fetch.isSuccessful()) { - Toast.makeText(BrowseActivity.this, "Error while fetching userdata: " + userdata_fetch.getException().getMessage(), Toast.LENGTH_LONG).show(); + runOnUiThread(() -> Toast.makeText(BrowseActivity.this, "Error while fetching userdata: " + userdata_fetch.getException().getMessage(), Toast.LENGTH_LONG).show()); return; } @@ -109,7 +109,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { } catch (ExecutionException | InterruptedException e) { e.printStackTrace(); - Toast.makeText(BrowseActivity.this, "Error while fetching userdata: " + e.getMessage(), Toast.LENGTH_LONG).show(); + runOnUiThread(() -> Toast.makeText(BrowseActivity.this, "Error while fetching userdata: " + e.getMessage(), Toast.LENGTH_LONG).show()); return; } From 77f55b3f911c885ed475bb9757dced625e636488 Mon Sep 17 00:00:00 2001 From: Iyxan23 Date: Sun, 7 Feb 2021 09:35:00 +0700 Subject: [PATCH 11/67] feat: Add commit id indicator --- .../collab/online/BrowseCodeActivity.java | 6 +++++ .../main/res/layout/activity_browse_code.xml | 23 ++++++++++++++++--- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/iyxan23/sketch/collab/online/BrowseCodeActivity.java b/app/src/main/java/com/iyxan23/sketch/collab/online/BrowseCodeActivity.java index ecab203..9bac723 100644 --- a/app/src/main/java/com/iyxan23/sketch/collab/online/BrowseCodeActivity.java +++ b/app/src/main/java/com/iyxan23/sketch/collab/online/BrowseCodeActivity.java @@ -204,6 +204,12 @@ public void open_commit_history(View view) { new Thread(() -> { updateCode(PatchHelper.go_to_commit(project_data, c_commits, current_commit_index, which)); + runOnUiThread(() -> { + TextView commit_id = findViewById(R.id.commit_id_browse_code); + commit_id.setText("At: " + c_commits.get(which).id); + commit_id.setVisibility(View.VISIBLE); + }); + current_commit_index = which; runOnUiThread(dialog::dismiss); diff --git a/app/src/main/res/layout/activity_browse_code.xml b/app/src/main/res/layout/activity_browse_code.xml index 71e1018..ea4e5f9 100644 --- a/app/src/main/res/layout/activity_browse_code.xml +++ b/app/src/main/res/layout/activity_browse_code.xml @@ -4,6 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:animateLayoutChanges="true" tools:context=".online.BrowseCodeActivity" android:background="@color/colorBackground"> @@ -12,6 +13,7 @@ android:id="@+id/constraintLayout8" android:layout_width="0dp" android:layout_height="wrap_content" + android:animateLayoutChanges="true" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> @@ -23,7 +25,7 @@ android:layout_marginStart="16dp" android:layout_marginTop="16dp" android:layout_marginBottom="16dp" - app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintBottom_toTopOf="@+id/commit_id_browse_code" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:srcCompat="@drawable/ic_code_braces" /> @@ -64,10 +66,25 @@ android:layout_marginEnd="16dp" android:background="?android:selectableItemBackgroundBorderless" android:onClick="open_commit_history" - app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintBottom_toBottomOf="@+id/project_name" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toTopOf="parent" + app:layout_constraintTop_toTopOf="@+id/project_name" app:srcCompat="@drawable/ic_history" /> + + Date: Sun, 7 Feb 2021 09:36:45 +0700 Subject: [PATCH 12/67] tweak: Add ripple to the chevrons --- app/src/main/res/layout/activity_browse_code.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/res/layout/activity_browse_code.xml b/app/src/main/res/layout/activity_browse_code.xml index ea4e5f9..7430617 100644 --- a/app/src/main/res/layout/activity_browse_code.xml +++ b/app/src/main/res/layout/activity_browse_code.xml @@ -151,6 +151,7 @@ android:layout_height="wrap_content" android:layout_marginTop="16dp" android:layout_marginEnd="16dp" + android:background="?attr/selectableItemBackgroundBorderless" android:onClick="chevron_logic" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -203,6 +204,7 @@ android:layout_height="wrap_content" android:layout_marginTop="16dp" android:layout_marginEnd="16dp" + android:background="?attr/selectableItemBackgroundBorderless" android:onClick="chevron_view" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -255,6 +257,7 @@ android:layout_height="wrap_content" android:layout_marginTop="16dp" android:layout_marginEnd="16dp" + android:background="?attr/selectableItemBackgroundBorderless" android:onClick="chevron_file" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -307,6 +310,7 @@ android:layout_height="wrap_content" android:layout_marginTop="16dp" android:layout_marginEnd="16dp" + android:background="?attr/selectableItemBackgroundBorderless" android:onClick="chevron_library" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -359,6 +363,7 @@ android:layout_height="wrap_content" android:layout_marginTop="16dp" android:layout_marginEnd="16dp" + android:background="?attr/selectableItemBackgroundBorderless" android:onClick="chevron_resource" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" From f9706738aec3144dd6fbd4eba7ff517fa15bf2cc Mon Sep 17 00:00:00 2001 From: Iyxan23 Date: Sun, 7 Feb 2021 09:44:42 +0700 Subject: [PATCH 13/67] todo: Add pagination --- .../java/com/iyxan23/sketch/collab/online/CommitsActivity.java | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/com/iyxan23/sketch/collab/online/CommitsActivity.java b/app/src/main/java/com/iyxan23/sketch/collab/online/CommitsActivity.java index dcb211b..0ba8f00 100644 --- a/app/src/main/java/com/iyxan23/sketch/collab/online/CommitsActivity.java +++ b/app/src/main/java/com/iyxan23/sketch/collab/online/CommitsActivity.java @@ -54,6 +54,7 @@ protected void onCreate(Bundle savedInstanceState) { commit_rv.setLayoutManager(new LinearLayoutManager(this)); commit_rv.setAdapter(adapter); + // TODO: PAGINATION commits_reference .orderBy("timestamp", Query.Direction.DESCENDING) .get() From ca631493fa45636696a35222d94097d92a73ef8a Mon Sep 17 00:00:00 2001 From: Iyxan23 Date: Sun, 7 Feb 2021 10:01:34 +0700 Subject: [PATCH 14/67] feat: Add help button --- .../sketch/collab/online/UploadActivity.java | 20 ++++++ app/src/main/res/drawable/ic_help.xml | 5 ++ app/src/main/res/layout/activity_upload.xml | 63 +++++++++---------- 3 files changed, 56 insertions(+), 32 deletions(-) create mode 100644 app/src/main/res/drawable/ic_help.xml diff --git a/app/src/main/java/com/iyxan23/sketch/collab/online/UploadActivity.java b/app/src/main/java/com/iyxan23/sketch/collab/online/UploadActivity.java index 0efb378..d6395aa 100644 --- a/app/src/main/java/com/iyxan23/sketch/collab/online/UploadActivity.java +++ b/app/src/main/java/com/iyxan23/sketch/collab/online/UploadActivity.java @@ -1,7 +1,9 @@ package com.iyxan23.sketch.collab.online; +import android.app.AlertDialog; import android.app.ProgressDialog; import android.os.Bundle; +import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; @@ -288,4 +290,22 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { */ }); } + + public void show_help(View view) { + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle("Help"); + builder.setMessage( + "Open Source:\n" + + "Enabled: People can view your project and your project's source code, only selected collaborators can contribute.\n" + + "Disabled: People cannot view or view your project's source code, only selected collaborators can view / contribute to your project.\n\n" + + + "Private:\n" + + "Enabled: Only YOU can view / edit the project, collaborators are disabled in this private mode.\n" + + "Disabled: People can view / contribute to your project depending if it's open source or not.\n\n" + + + "Still need help? Ask it on https://github.com/Iyxan23/sk-collab/issues" + ); + + builder.create().show(); + } } diff --git a/app/src/main/res/drawable/ic_help.xml b/app/src/main/res/drawable/ic_help.xml new file mode 100644 index 0000000..3d4adce --- /dev/null +++ b/app/src/main/res/drawable/ic_help.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout/activity_upload.xml b/app/src/main/res/layout/activity_upload.xml index fd39ef1..c96799b 100644 --- a/app/src/main/res/layout/activity_upload.xml +++ b/app/src/main/res/layout/activity_upload.xml @@ -43,8 +43,7 @@ @@ -66,11 +65,12 @@ android:ems="10" android:foregroundTint="@color/colorPrimary" android:gravity="start|top" + android:hint="My Awesome Project Name" android:inputType="text" - android:text="hmm" + android:maxLength="50" android:textColor="#FFFFFF" + android:textColorHint="#545454" android:textSize="14sp" - android:maxLength="50" app:layout_constraintEnd_toEndOf="@+id/project_name_upload" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="@+id/project_name_upload" @@ -95,9 +95,10 @@ android:ems="10" android:foregroundTint="@color/colorPrimary" android:gravity="start|top" + android:hint="My Awesome Description" android:inputType="textMultiLine" - android:text="hmm" android:textColor="#FFFFFF" + android:textColorHint="#545454" android:textSize="14sp" app:layout_constraintEnd_toEndOf="@+id/project_name_upload" app:layout_constraintStart_toStartOf="@+id/textView11" @@ -122,7 +123,7 @@ android:layout_marginTop="16dp" android:layout_marginEnd="32dp" android:fontFamily="@font/roboto_medium" - android:text="Project Name" + android:text="Upload Project Name" android:textColor="#FFFFFF" android:textSize="20sp" app:layout_constraintEnd_toEndOf="parent" @@ -134,8 +135,8 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="24dp" - android:text="Open Source" android:checked="true" + android:text="Open Source (People can view your project)" android:textColor="#FFFFFF" app:layout_constraintEnd_toEndOf="@+id/description_upload" app:layout_constraintStart_toStartOf="@+id/description_upload" @@ -145,38 +146,36 @@ android:id="@+id/private_upload" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginBottom="32dp" - android:text="Private" + android:text="Private (Only you can view the project)" android:textColor="#FFFFFF" - app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="@+id/description_upload" app:layout_constraintStart_toStartOf="@+id/description_upload" app:layout_constraintTop_toBottomOf="@+id/open_source_upload" /> +