diff --git a/app/src/main/java/org/mian/gitnex/adapters/ExploreIssuesAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/ExploreIssuesAdapter.java index ee4a322b..cca48f03 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/ExploreIssuesAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/ExploreIssuesAdapter.java @@ -117,14 +117,21 @@ public class ExploreIssuesAdapter extends RecyclerView.Adapter context.startActivity(intentIssueDetail)); - frameLabels.setOnClickListener(v -> context.startActivity(intentIssueDetail)); - frameLabelsDots.setOnClickListener(v -> context.startActivity(intentIssueDetail)); + itemView.setOnClickListener(v -> { + repo.saveToDB(context); + context.startActivity(intentIssueDetail); + }); + frameLabels.setOnClickListener(v -> { + repo.saveToDB(context); + context.startActivity(intentIssueDetail); + }); + frameLabelsDots.setOnClickListener(v -> { + repo.saveToDB(context); + context.startActivity(intentIssueDetail); + }); }, 200); issueAssigneeAvatar.setOnClickListener(v -> { diff --git a/app/src/main/java/org/mian/gitnex/database/api/RepositoriesApi.java b/app/src/main/java/org/mian/gitnex/database/api/RepositoriesApi.java index 018ba700..e507a473 100644 --- a/app/src/main/java/org/mian/gitnex/database/api/RepositoriesApi.java +++ b/app/src/main/java/org/mian/gitnex/database/api/RepositoriesApi.java @@ -19,12 +19,13 @@ public class RepositoriesApi extends BaseApi { repositoriesDao = gitnexDatabase.repositoriesDao(); } - public long insertRepository(int repoAccountId, String repositoryOwner, String repositoryName) { + public long insertRepository(int repoAccountId, String repositoryOwner, String repositoryName, int mostVisited) { Repository repository = new Repository(); repository.setRepoAccountId(repoAccountId); repository.setRepositoryOwner(repositoryOwner); repository.setRepositoryName(repositoryName); + repository.setMostVisited(mostVisited); return insertRepositoryAsyncTask(repository); } @@ -69,4 +70,7 @@ public class RepositoriesApi extends BaseApi { executorService.execute(() -> repositoriesDao.deleteRepository(repositoryId)); } + public void updateRepositoryMostVisited(int mostVisited, int repositoryId) { + executorService.execute(() -> repositoriesDao.updateRepositoryMostVisited(mostVisited, repositoryId)); + } } diff --git a/app/src/main/java/org/mian/gitnex/database/dao/RepositoriesDao.java b/app/src/main/java/org/mian/gitnex/database/dao/RepositoriesDao.java index 92ad05d6..f979ac3c 100644 --- a/app/src/main/java/org/mian/gitnex/database/dao/RepositoriesDao.java +++ b/app/src/main/java/org/mian/gitnex/database/dao/RepositoriesDao.java @@ -44,4 +44,6 @@ public interface RepositoriesDao { @Query("DELETE FROM Repositories WHERE repoAccountId = :repoAccountId") void deleteRepositoriesByAccount(int repoAccountId); + @Query("UPDATE Repositories SET mostVisited = :mostVisited WHERE repositoryId = :repositoryId") + void updateRepositoryMostVisited(int mostVisited, int repositoryId); } diff --git a/app/src/main/java/org/mian/gitnex/database/db/GitnexDatabase.java b/app/src/main/java/org/mian/gitnex/database/db/GitnexDatabase.java index ed74a9b1..e1e13524 100644 --- a/app/src/main/java/org/mian/gitnex/database/db/GitnexDatabase.java +++ b/app/src/main/java/org/mian/gitnex/database/db/GitnexDatabase.java @@ -19,11 +19,11 @@ import org.mian.gitnex.database.models.UserAccount; */ @Database(entities = {Draft.class, Repository.class, UserAccount.class}, - version = 5, exportSchema = false) + version = 6, exportSchema = false) public abstract class GitnexDatabase extends RoomDatabase { private static final String DB_NAME = "gitnex"; - private static GitnexDatabase gitnexDatabase; + private static volatile GitnexDatabase gitnexDatabase; public abstract DraftsDao draftsDao(); public abstract RepositoriesDao repositoriesDao(); @@ -61,6 +61,14 @@ public abstract class GitnexDatabase extends RoomDatabase { } }; + private static final Migration MIGRATION_5_6 = new Migration(5, 6) { + + @Override + public void migrate(@NonNull SupportSQLiteDatabase database) { + database.execSQL("ALTER TABLE 'Repositories' ADD COLUMN 'mostVisited' INTEGER NOT NULL DEFAULT 0"); + } + }; + public static GitnexDatabase getDatabaseInstance(Context context) { if (gitnexDatabase == null) { @@ -68,9 +76,9 @@ public abstract class GitnexDatabase extends RoomDatabase { if(gitnexDatabase == null) { gitnexDatabase = Room.databaseBuilder(context, GitnexDatabase.class, DB_NAME) - // .fallbackToDestructiveMigration() + //.fallbackToDestructiveMigration() .allowMainThreadQueries() - .addMigrations(MIGRATION_1_2, MIGRATION_2_3, MIGRATION_3_4, MIGRATION_4_5) + .addMigrations(MIGRATION_1_2, MIGRATION_2_3, MIGRATION_3_4, MIGRATION_4_5, MIGRATION_5_6) .build(); } diff --git a/app/src/main/java/org/mian/gitnex/database/models/Repository.java b/app/src/main/java/org/mian/gitnex/database/models/Repository.java index f89c864e..18f366aa 100644 --- a/app/src/main/java/org/mian/gitnex/database/models/Repository.java +++ b/app/src/main/java/org/mian/gitnex/database/models/Repository.java @@ -24,6 +24,7 @@ public class Repository implements Serializable { private int repoAccountId; private String repositoryOwner; private String repositoryName; + private int mostVisited; public int getRepositoryId() { return repositoryId; @@ -56,4 +57,12 @@ public class Repository implements Serializable { public void setRepositoryName(String repositoryName) { this.repositoryName = repositoryName; } + + public int getMostVisited() { + return mostVisited; + } + + public void setMostVisited(int mostVisited) { + this.mostVisited = mostVisited; + } } diff --git a/app/src/main/java/org/mian/gitnex/helpers/contexts/RepositoryContext.java b/app/src/main/java/org/mian/gitnex/helpers/contexts/RepositoryContext.java index 6a769bee..cefa0fe7 100644 --- a/app/src/main/java/org/mian/gitnex/helpers/contexts/RepositoryContext.java +++ b/app/src/main/java/org/mian/gitnex/helpers/contexts/RepositoryContext.java @@ -244,15 +244,17 @@ public class RepositoryContext implements Serializable { assert repositoryData != null; Integer count = repositoryData.checkRepository(currentActiveAccountId, getOwner(), getName()); + Repository getMostVisitedValue = repositoryData.getRepository(currentActiveAccountId, getOwner(), getName()); if(count == 0) { - long id = repositoryData.insertRepository(currentActiveAccountId, getOwner(), getName()); + long id = repositoryData.insertRepository(currentActiveAccountId, getOwner(), getName(), getMostVisitedValue.getMostVisited() + 1); setRepositoryId((int) id); return (int) id; } else { Repository data = repositoryData.getRepository(currentActiveAccountId, getOwner(), getName()); setRepositoryId(data.getRepositoryId()); + repositoryData.updateRepositoryMostVisited(getMostVisitedValue.getMostVisited() + 1, data.getRepositoryId()); return data.getRepositoryId(); } }