diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index b41ddfe..8e8c47a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,7 +13,7 @@
android:supportsRtl="true"
android:theme="@style/AppTheme"
- tools:ignore="GoogleAppIndexingWarning">
+ tools:ignore="AllowBackup,GoogleAppIndexingWarning">
@@ -22,6 +22,16 @@
android:label="@string/title_activity_new_board"
android:theme="@style/AppTheme.NoActionBar" />
+
+
+
+
+
@@ -31,11 +41,6 @@
-
-
\ No newline at end of file
diff --git a/app/src/main/java/it/unisannio/ding/ids/wedroid/app/data/dao/WListDao.java b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/data/dao/WListDao.java
index be9e2e4..9fe2653 100644
--- a/app/src/main/java/it/unisannio/ding/ids/wedroid/app/data/dao/WListDao.java
+++ b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/data/dao/WListDao.java
@@ -19,7 +19,7 @@ public interface WListDao {
LiveData> getAllWList();
@Insert(onConflict = OnConflictStrategy.REPLACE)
- /**Completable**/ void insert(WList wList);
+ void insert(WList wList);
@Delete
void delete(WList wList);
diff --git a/app/src/main/java/it/unisannio/ding/ids/wedroid/app/data/repository/WListRepository.kt b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/data/repository/WListRepository.kt
index c2f28fe..d704b55 100644
--- a/app/src/main/java/it/unisannio/ding/ids/wedroid/app/data/repository/WListRepository.kt
+++ b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/data/repository/WListRepository.kt
@@ -1,6 +1,8 @@
package it.unisannio.ding.ids.wedroid.app.data.repository
import android.util.Log
+
+import androidx.lifecycle.LiveData
import it.unisannio.ding.ids.wedroid.app.data.dao.WListDao
import it.unisannio.ding.ids.wedroid.app.data.entity.WList
import it.unisannio.ding.ids.wedroid.app.data.entity.convert
@@ -18,8 +20,9 @@ class WListRepository(
private val service: ListService,
private val reader: PreferenceReader
) {
- val allWLists by lazy{
- dao.getAllWList()
+
+ val allWLists: LiveData> by lazy{
+ dao.allWList
}
init {
@@ -46,7 +49,7 @@ class WListRepository(
})
}
- private suspend fun synchronizeCallback(
+ private fun synchronizeCallback(
response: Response>)
{
if (!response.isSuccessful) {
@@ -90,19 +93,21 @@ class WListRepository(
}
- private suspend fun addNewWListToDb(wLists: Collection) {
+ private fun addNewWListToDb(wLists: Collection) {
wLists.forEach {
dao.insert(it)
}
}
- private suspend fun removeOldWListsFromDb(wLists: Collection) {
+
+ private fun removeOldWListsFromDb(wLists: Collection) {
allWLists.value?.minus(wLists)
?.forEach {
dao.delete(it)
}
}
+ @Suppress("NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS")
private fun logNetworkError(message: String?) {
Log.e("RETROFIT", message)
}
diff --git a/app/src/main/java/it/unisannio/ding/ids/wedroid/app/util/ServicesFactory.kt b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/util/ServicesFactory.kt
index 5e3d8dd..2001c80 100644
--- a/app/src/main/java/it/unisannio/ding/ids/wedroid/app/util/ServicesFactory.kt
+++ b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/util/ServicesFactory.kt
@@ -1,17 +1,10 @@
package it.unisannio.ding.ids.wedroid.app.util
-import it.unisannio.ding.ids.wedroid.wrapper.api.BoardService
-import it.unisannio.ding.ids.wedroid.wrapper.api.CardCommentService
-import it.unisannio.ding.ids.wedroid.wrapper.api.CardService
-import it.unisannio.ding.ids.wedroid.wrapper.api.ChecklistService
-import it.unisannio.ding.ids.wedroid.wrapper.api.ListService
-import it.unisannio.ding.ids.wedroid.wrapper.api.SwimlanesService
-import it.unisannio.ding.ids.wedroid.wrapper.api.UserService
+import it.unisannio.ding.ids.wedroid.wrapper.api.*
import okhttp3.OkHttpClient
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
-
class ServicesFactory(
reader: PreferenceReader
) {
diff --git a/app/src/main/java/it/unisannio/ding/ids/wedroid/app/util/SharedPreferenceHelper.kt b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/util/SharedPreferenceHelper.kt
index 41907b7..796625c 100644
--- a/app/src/main/java/it/unisannio/ding/ids/wedroid/app/util/SharedPreferenceHelper.kt
+++ b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/util/SharedPreferenceHelper.kt
@@ -2,8 +2,7 @@ package it.unisannio.ding.ids.wedroid.app.util
import android.content.Context
-class SharedPreferenceHelper(context: Context) : PreferenceReader, PreferenceWriter {
-
+class SharedPreferenceHelper(context : Context) : PreferenceReader, PreferenceWriter {
private val sp = context.getSharedPreferences("userinfo", Context.MODE_PRIVATE)
override fun getBaseUrl(): String? {
@@ -21,7 +20,8 @@ class SharedPreferenceHelper(context: Context) : PreferenceReader, PreferenceWri
override fun setBaseUrl(baseUrl: String?) {
val editor = sp.edit()
editor.putString("url", baseUrl).apply()
- }
+
+ }
override fun setUserId(userId: String?) {
val editor = sp.edit()
@@ -42,4 +42,3 @@ class SharedPreferenceHelper(context: Context) : PreferenceReader, PreferenceWri
editor.putString("boardId", token).apply()
}
}
-
diff --git a/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/BoardViewActivity.java b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/BoardViewActivity.java
index ead9d77..0d2f5b5 100644
--- a/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/BoardViewActivity.java
+++ b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/BoardViewActivity.java
@@ -14,7 +14,7 @@ import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
-
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
@@ -43,6 +43,7 @@ public class BoardViewActivity extends AppCompatActivity {
private ServicesFactory service;
private Toolbar myToolbar;
private Board board;
+ private SwipeRefreshLayout swipeRefreshLayout;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -51,6 +52,9 @@ public class BoardViewActivity extends AppCompatActivity {
myToolbar = findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);
+ swipeRefreshLayout = findViewById(R.id.pullToRefresh);
+ swipeRefreshLayout.setRefreshing(false);
+
Intent i = getIntent();
idBoard= i.getStringExtra("idBoard");
@@ -80,6 +84,14 @@ public class BoardViewActivity extends AppCompatActivity {
startActivityForResult(i, WLISTS_REQUEST);
}
});
+
+ swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+ @Override
+ public void onRefresh() {
+ initializeUI(idBoard);
+ swipeRefreshLayout.setRefreshing(false);
+ }
+ });
}
private void initializeUI(String idBoard) {
@@ -87,47 +99,62 @@ public class BoardViewActivity extends AppCompatActivity {
service.getBoardService().getBoard(idBoard).enqueue(new Callback() {
@Override
public void onResponse(@NotNull Call call, @NotNull Response response) {
+ assert response.body() != null;
board = response.body();
+ if (board.getId()==null) {
+ Toast.makeText(
+ getApplicationContext(),
+ getApplicationContext().getString(R.string.board_deleted),
+ Toast.LENGTH_LONG)
+ .show();
+ getListsButton.setEnabled(false);
+ } else {
+ Objects.requireNonNull(getSupportActionBar()).setTitle(board.getTitle());
+ myToolbar.setBackgroundColor(Color.parseColor(encodeColor(
+ board.getBackgroundColor().toString())));
- Objects.requireNonNull(getSupportActionBar()).setTitle(board.getTitle());
- myToolbar.setBackgroundColor(Color.parseColor(encodeColor(
- board.getBackgroundColor().toString())));
+ boardTitle = board.getTitle();
- boardTitle = board.getTitle();
+ boardColor = Color.parseColor(encodeColor(
+ board.getBackgroundColor().toString()));
- boardColor= Color.parseColor(encodeColor(
- board.getBackgroundColor().toString()));
+ Drawable background = getListsButton.getBackground();
+ background.setTint(boardColor);
+ getListsButton.setBackgroundDrawable(background);
- Drawable background = getListsButton.getBackground();
- background.setTint(boardColor);
- getListsButton.setBackgroundDrawable(background);
+ description.setText(board.getDescription());
+ permission.setText(board.getPermission().toString());
+ members.setText("");
+ for (int i = 0; i < board.getMembers().size(); i++) {
+ replaceIDUserToUsername(board.getMembers().get(i).getUserId());
+ }
- description.setText(board.getDescription());
- permission.setText(board.getPermission().toString());
- members.setText("");
- for(int i =0; i labelsTitle = new ArrayList<>();
+ for (int i = 0; i < board.getLabels().size(); i++) {
+ labelsTitle.add(board.getLabels().get(i).getName());
+ }
+ ArrayAdapter adapter = new ArrayAdapter<>(getApplicationContext(),
+ android.R.layout.simple_list_item_1, labelsTitle);
+ listView.setAdapter(adapter);
}
- creationDate.append("\n" + board.getCreatedAt());
- lastModificationDate.append("\n" + board.getModifiedAt());
-
- divider1.setBackgroundColor(boardColor);
- divider2.setBackgroundColor(boardColor);
- divider3.setBackgroundColor(boardColor);
-
- ArrayList labelsTitle = new ArrayList<>();
- for (int i=0; i call, @NotNull Throwable t){
+ Toast.makeText(getApplicationContext(),
+ getApplicationContext().getString(R.string.board_deleted),
+ Toast.LENGTH_LONG).show();
}
- ArrayAdapter adapter = new ArrayAdapter<>(getApplicationContext(),
- android.R.layout.simple_list_item_1, labelsTitle);
- listView.setAdapter(adapter);
- }
-
- @Override
- public void onFailure(@NotNull Call call, @NotNull Throwable t) {
- //TODO
- }
});
}
diff --git a/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/WListsListActivity.java b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/WListsListActivity.java
index 83a13b1..fe836ce 100644
--- a/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/WListsListActivity.java
+++ b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/WListsListActivity.java
@@ -22,10 +22,11 @@ import java.util.List;
import java.util.Objects;
import it.unisannio.ding.ids.wedroid.app.R;
+
+import it.unisannio.ding.ids.wedroid.app.viewmodel.WListsListViewModel;
import it.unisannio.ding.ids.wedroid.app.data.entity.WList;
import it.unisannio.ding.ids.wedroid.app.util.SharedPreferenceHelper;
import it.unisannio.ding.ids.wedroid.app.view.adapter.WListsAdapter;
-import it.unisannio.ding.ids.wedroid.app.viewModel.WListsListViewModel;
public class WListsListActivity extends AppCompatActivity {
diff --git a/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/adapter/BoardsListAdapter.kt b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/adapter/BoardsListAdapter.kt
index 8d66b87..a92fc66 100644
--- a/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/adapter/BoardsListAdapter.kt
+++ b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/adapter/BoardsListAdapter.kt
@@ -38,9 +38,11 @@ class BoardsListAdapter internal constructor(
holder.boardTitle.text = board.title
holder.itemView.setOnClickListener {
- val intent = Intent(it.context, BoardViewActivity::class.java)
+
+ val intent = Intent(holder.itemView.context, BoardViewActivity::class.java)
intent.putExtra("idBoard", board.id)
- it.context.startActivity(intent)
+ holder.itemView.context.startActivity(intent)
+
}
}
diff --git a/app/src/main/java/it/unisannio/ding/ids/wedroid/app/viewmodel/WListsListViewModel.java b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/viewmodel/WListsListViewModel.java
new file mode 100644
index 0000000..e5281a5
--- /dev/null
+++ b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/viewmodel/WListsListViewModel.java
@@ -0,0 +1,47 @@
+package it.unisannio.ding.ids.wedroid.app.viewmodel;
+
+import android.app.Application;
+
+import androidx.annotation.NonNull;
+import androidx.lifecycle.AndroidViewModel;
+import androidx.lifecycle.LiveData;
+
+import java.util.List;
+
+import it.unisannio.ding.ids.wedroid.app.data.database.WListDatabase;
+import it.unisannio.ding.ids.wedroid.app.data.entity.WList;
+import it.unisannio.ding.ids.wedroid.app.data.repository.WListRepository;
+import it.unisannio.ding.ids.wedroid.app.util.PreferenceReader;
+import it.unisannio.ding.ids.wedroid.app.util.ServicesFactory;
+import it.unisannio.ding.ids.wedroid.app.util.SharedPreferenceHelper;
+
+
+public class WListsListViewModel extends AndroidViewModel {
+ private WListRepository wListRepository;
+ private LiveData> allWLists;
+
+ public WListsListViewModel(@NonNull Application application) {
+ super(application);
+ PreferenceReader reader = new SharedPreferenceHelper(application);
+ wListRepository = new WListRepository(
+ WListDatabase.getDatabase(application).wListDao(),
+ ServicesFactory.Companion.getInstance(reader).getListService(),
+ reader);
+ allWLists = wListRepository.getAllWLists();
+ }
+
+ public LiveData> getAllWLists(){
+ return allWLists;
+ }
+
+ public void deleteWList(int position, String idBoard) {
+ List wList = allWLists.getValue();
+
+ if (wList != null)
+ wListRepository.deleteWList(idBoard, wList.get(position).getId());
+ }
+
+ public void refresh() {
+ wListRepository.synchronize();
+ }
+}
diff --git a/app/src/main/res/layout/activity_board_view.xml b/app/src/main/res/layout/activity_board_view.xml
index 60678e1..04c8d00 100644
--- a/app/src/main/res/layout/activity_board_view.xml
+++ b/app/src/main/res/layout/activity_board_view.xml
@@ -1,198 +1,212 @@
-
-
-
+
+
+
+
-
+
+
+ android:orientation="vertical">
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:layout_height="match_parent">
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 57620b6..935d24e 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -21,6 +21,7 @@
There was a problem with the name of the new board
It was not possible to add a new board
Name cannot be empty
+ The selected board has been deleted
- Belize