From 688987e855a1a5adbf319759b9d0eea813104cbf Mon Sep 17 00:00:00 2001 From: Jelena Petrovic Date: Sun, 20 Nov 2022 23:45:18 +0100 Subject: Dodata sqllite baza za poruke i konekcija sa soketom na back-u #37 --- .../.idea/deploymentTargetDropDown.xml | 17 ++++++ Client/BrzoDoLokacije/app/build.gradle | 1 + .../app/libs/signalr-client-sdk-android.jar | Bin 0 -> 57824 bytes .../BrzoDoLokacije/app/libs/signalr-client-sdk.jar | Bin 0 -> 497821 bytes .../app/src/main/AndroidManifest.xml | 17 ++++-- .../brzodolokacije/Activities/ChatActivity.kt | 17 ++++++ .../com/example/brzodolokacije/MainActivity.kt | 7 +-- .../com/example/brzodolokacije/chat/DBHelper.kt | 63 +++++++++++++++++++++ .../example/brzodolokacije/chat/SignalRListener.kt | 32 +++++++++++ .../app/src/main/res/layout/activity_chat.xml | 9 +++ 10 files changed, 154 insertions(+), 9 deletions(-) create mode 100644 Client/BrzoDoLokacije/.idea/deploymentTargetDropDown.xml create mode 100644 Client/BrzoDoLokacije/app/libs/signalr-client-sdk-android.jar create mode 100644 Client/BrzoDoLokacije/app/libs/signalr-client-sdk.jar create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/DBHelper.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/SignalRListener.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat.xml diff --git a/Client/BrzoDoLokacije/.idea/deploymentTargetDropDown.xml b/Client/BrzoDoLokacije/.idea/deploymentTargetDropDown.xml new file mode 100644 index 0000000..d34d986 --- /dev/null +++ b/Client/BrzoDoLokacije/.idea/deploymentTargetDropDown.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/build.gradle b/Client/BrzoDoLokacije/app/build.gradle index e1ad943..8437053 100644 --- a/Client/BrzoDoLokacije/app/build.gradle +++ b/Client/BrzoDoLokacije/app/build.gradle @@ -54,6 +54,7 @@ dependencies { implementation 'androidx.recyclerview:recyclerview:1.2.1' implementation "androidx.paging:paging-runtime:3.0.0-alpha03" implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation 'com.microsoft.signalr:signalr:6.0.0' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' diff --git a/Client/BrzoDoLokacije/app/libs/signalr-client-sdk-android.jar b/Client/BrzoDoLokacije/app/libs/signalr-client-sdk-android.jar new file mode 100644 index 0000000..967d741 Binary files /dev/null and b/Client/BrzoDoLokacije/app/libs/signalr-client-sdk-android.jar differ diff --git a/Client/BrzoDoLokacije/app/libs/signalr-client-sdk.jar b/Client/BrzoDoLokacije/app/libs/signalr-client-sdk.jar new file mode 100644 index 0000000..f736f64 Binary files /dev/null and b/Client/BrzoDoLokacije/app/libs/signalr-client-sdk.jar differ diff --git a/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml b/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml index 1f19b5c..8469bd3 100644 --- a/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml +++ b/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + xmlns:tools="http://schemas.android.com/tools"> @@ -35,10 +35,17 @@ android:supportsRtl="true" android:theme="@style/Theme.BrzoDoLokacije" android:usesCleartextTraffic="true" - tools:targetApi="31" > + tools:targetApi="31"> + + + + android:exported="false"> @@ -63,7 +70,7 @@ + android:screenOrientation="portrait"> @@ -94,7 +101,7 @@ android:name="androidx.core.content.FileProvider" android:authorities="com.example.android.fileprovider" android:exported="false" - android:grantUriPermissions="true" > + android:grantUriPermissions="true"> diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt new file mode 100644 index 0000000..96c8ea7 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt @@ -0,0 +1,17 @@ +package com.example.brzodolokacije.Activities + +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import com.example.brzodolokacije.R +import com.example.brzodolokacije.chat.DBHelper + +class ChatActivity : AppCompatActivity() { + + private var dbConnection:DBHelper?=null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_chat) + dbConnection= DBHelper(this@ChatActivity,null) + } +} \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/MainActivity.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/MainActivity.kt index 0c43088..515a41b 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/MainActivity.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/MainActivity.kt @@ -1,16 +1,15 @@ package com.example.brzodolokacije import android.content.Intent -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle -import android.util.Log import android.widget.Toast +import androidx.appcompat.app.AppCompatActivity import com.auth0.android.jwt.JWT import com.example.brzodolokacije.Activities.ActivityLoginRegister import com.example.brzodolokacije.Activities.NavigationActivity import com.example.brzodolokacije.Services.RetrofitHelper import com.example.brzodolokacije.Services.SharedPreferencesHelper -import com.example.brzodolokacije.Services.authCheck +import com.example.brzodolokacije.chat.SignalRListener import retrofit2.Call import retrofit2.Response @@ -22,7 +21,7 @@ class MainActivity : AppCompatActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val intent:Intent - + SignalRListener.getInstance(this@MainActivity) if(checkLoggedIn()) { intent = Intent(this, NavigationActivity::class.java) } diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/DBHelper.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/DBHelper.kt new file mode 100644 index 0000000..60e870e --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/DBHelper.kt @@ -0,0 +1,63 @@ +package com.example.brzodolokacije.chat + +import android.content.Context +import android.database.Cursor +import android.database.sqlite.SQLiteDatabase +import android.database.sqlite.SQLiteOpenHelper + +class DBHelper : + SQLiteOpenHelper { + + var db:SQLiteDatabase?=null + + constructor(context: Context, factory: SQLiteDatabase.CursorFactory?):super(context, DATABASE_NAME, factory,2){ + db=readableDatabase + } + + companion object{ + //database name + private val DATABASE_NAME = "chatHistory" + //database tables + val CONTACTS_TABLE_NAME = "contacts" + val MESSAGES_TABLE_NAME = "messages" + } + + override fun onCreate(db: SQLiteDatabase?) { + if(!doesTableExist(CONTACTS_TABLE_NAME,db)){ + var sql:String="CREATE TABLE "+ CONTACTS_TABLE_NAME+"(" + + "userId" +"TEXT PRIMARY KEY,"+ + "read" +"INT"+ + ")" + db?.execSQL(sql) + } + if(!doesTableExist(MESSAGES_TABLE_NAME,db)){ + var sql:String="CREATE TABLE "+ MESSAGES_TABLE_NAME+"(" + + "senderId" +"TEXT,"+ + "receiverId"+"TEXT,"+ + "message" +"TEXT,"+ + "dateTime"+"TEXT"+ + ")" + db?.execSQL(sql) + } + } + + fun doesTableExist(tableName:String,db: SQLiteDatabase?):Boolean{ + if(db!=null){ + var sqlString:String="select DISTINCT tbl_name from sqlite_master where tbl_name = '\"+tableName+\"'" + var cursor: Cursor=db.rawQuery(sqlString,null) + if(cursor!=null){ + if(cursor.count>0){ + return true + } + return false + } + } + return false + } + + override fun onUpgrade(db: SQLiteDatabase?, p1: Int, p2: Int) { + db?.execSQL("DROP TABLE IF EXISTS " + CONTACTS_TABLE_NAME) + db?.execSQL("DROP TABLE IF EXISTS " + MESSAGES_TABLE_NAME) + onCreate(db) + } +} \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/SignalRListener.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/SignalRListener.kt new file mode 100644 index 0000000..ee0c86d --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/SignalRListener.kt @@ -0,0 +1,32 @@ +package com.example.brzodolokacije.chat + +import android.app.Activity +import android.util.Log +import com.example.brzodolokacije.Services.RetrofitHelper +import com.example.brzodolokacije.Services.SharedPreferencesHelper +import com.microsoft.signalr.HubConnection +import com.microsoft.signalr.HubConnectionBuilder +import io.reactivex.rxjava3.core.Single + +class SignalRListener private constructor(val activity: Activity){ + private var hubConnection:HubConnection + init{ + hubConnection=HubConnectionBuilder.create(RetrofitHelper.baseUrl+"/chathub") + .withAccessTokenProvider(Single.defer{ Single.just(SharedPreferencesHelper.getValue("jwt", activity).toString())}) + .build() + hubConnection.start().blockingAwait() + Log.d("main", hubConnection.connectionState.toString()) + } + + + companion object{ + private var instance:SignalRListener?=null + fun getInstance(activity: Activity):SignalRListener{ + if(instance==null){ + instance= SignalRListener(activity) + } + return instance as SignalRListener + } + } + +} \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat.xml new file mode 100644 index 0000000..093a95a --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file -- cgit v1.2.3