diff options
10 files changed, 154 insertions, 9 deletions
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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="deploymentTargetDropDown"> + <targetSelectedWithDropDown> + <Target> + <type value="QUICK_BOOT_TARGET" /> + <deviceKey> + <Key> + <type value="VIRTUAL_DEVICE_PATH" /> + <value value="C:\Users\PC\.android\avd\Copy_of_Pixel_2_API_32.avd" /> + </Key> + </deviceKey> + </Target> + </targetSelectedWithDropDown> + <timeTargetWasSelectedWithDropDown value="2022-11-20T22:15:01.646388600Z" /> + </component> +</project>
\ 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 Binary files differnew file mode 100644 index 0000000..967d741 --- /dev/null +++ b/Client/BrzoDoLokacije/app/libs/signalr-client-sdk-android.jar diff --git a/Client/BrzoDoLokacije/app/libs/signalr-client-sdk.jar b/Client/BrzoDoLokacije/app/libs/signalr-client-sdk.jar Binary files differnew file mode 100644 index 0000000..f736f64 --- /dev/null +++ b/Client/BrzoDoLokacije/app/libs/signalr-client-sdk.jar 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 @@ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" > + xmlns:tools="http://schemas.android.com/tools"> <!-- DOZVOLE --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> @@ -35,10 +35,17 @@ android:supportsRtl="true" android:theme="@style/Theme.BrzoDoLokacije" android:usesCleartextTraffic="true" - tools:targetApi="31" > + tools:targetApi="31"> + <activity + android:name=".Activities.ChatActivity" + android:exported="false"> + <meta-data + android:name="android.app.lib_name" + android:value="" /> + </activity> <activity android:name=".MapsActivity" - android:exported="false" > + android:exported="false"> <meta-data android:name="android.app.lib_name" android:value="" /> @@ -63,7 +70,7 @@ <activity android:name=".Activities.SplashPage" android:exported="true" - android:screenOrientation="portrait" > + android:screenOrientation="portrait"> <intent-filter> <action android:name="android.intent.action.MAIN" /> @@ -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"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" /> 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 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context=".Activities.ChatActivity"> + +</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file |