Git Product home page Git Product logo

klient's People

Contributors

lolocomotive avatar maelgangloff avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

vinceh121

klient's Issues

Homework doesn't update itself

The homework from Mon Ent Occitanie doesn't show after 1 or 2 weeks of use of the app
Even when I tried to actualize it didn't trove a single homework

Replace API types

Everything in lib/api can be deleted.
The new API wrapper has types and functions to download everything.

Change the way messages are handled

If I remove the database, it's gonna be difficult to search through the messages so this feature may have to go away unfortunately... (still thinking of a solution but not sure).
I'm also not gonna download all messages (maybe give an option to do it?).

Missing feature: permissions

Hey,
After reviewing all the codebase I found that there isn't any permission support yet, thus means that by example if I don't have the permission to see my schedule all (you can retrieve all permissions per schools just by using the infoutilisateur endpoint). I think that I will also address this issue in my fork.

Migrate to scolengo-api

The API klient is currently used has been replaced with a new one. The new API wrapper is already written but it needs to be integrated in the app.
Migrating to scolengo-api will require fundamental changes in the app structure.
This is the biggest target for V2.

Linked issues:

The issues are roughly in the order I plan to implement them in.

Fichier APK

Bonjour est-ce que c'est possible d'avoir un fichier APK de cette application svp ?

libsqlite3.so isn't bundled with the Linux executable

Hi,
The libsqlite3.so (which is dynamic library) file isn't in the "lib" folder in the tar archive so the app can't be ran on new Linux machines (I have sqlite3 installed). I am on Fedora 38. Here are the logs of the application:

flutter: Reading preferences
flutter: SqfliteFfiException(error, Invalid argument(s): Failed to load dynamic library 'libsqlite3.so': libsqlite3.so: Ne peut ouvrir le fichier d'objet partagé: Aucun fichier ou dossier de ce type}) DatabaseException(Invalid argument(s): Failed to load dynamic library 'libsqlite3.so': libsqlite3.so: Ne peut ouvrir le fichier d'objet partagé: Aucun fichier ou dossier de ce type)
flutter: #0      responseToResultOrThrow (package:sqflite_common_ffi/src/method_call.dart:123)
#1      SqfliteIsolate.handle (package:sqflite_common_ffi/src/isolate.dart:33)
<asynchronous suspension>
#2      _isolateHandle (package:sqflite_common_ffi/src/database_factory_ffi_io.dart:95)
<asynchronous suspension>
#3      ffiMethodCallhandleInIsolate (package:sqflite_common_ffi/src/database_factory_ffi_io.dart:50)
<asynchronous suspension>
#4      _SqfliteDatabaseFactoryImpl.invokeMethod (package:sqflite_common/src/mixin/factory.dart:22)
<asynchronous suspension>
#5      SqfliteDatabaseMixin.openDatabase (package:sqflite_common/src/database_mixin.dart:777)
<asynchronous suspension>
#6      SqfliteDatabaseMixin.doOpen (package:sqflite_common/src/database_mixin.dart:879)
<asynchronous suspension>
#7      SqfliteDatabaseOpenHelper.openDatabase (package:sqflite_common/src/database.dart:46)
<asynchronous suspension>
#8      SqfliteDatabaseFactoryMixin.openDatabase.<anonymous closure> (package:sqflite_common/src/factory_mixin.dart:110)
<asynchronous suspension>
#9      ReentrantLock.synchronized.<anonymous closure> (package:synchronized/src/reentrant_lock.dart:37)
<asynchronous suspension>
#10     BasicLock.synchronized (package:synchronized/src/basic_lock.dart:33)
<asynchronous suspension>
#11     DatabaseProvider.openDB (package:klient/database_provider.dart:256)
<asynchronous suspension>
#12     DatabaseProvider.initDB (package:klient/database_provider.dart:67)
<asynchronous suspension>
#13     DatabaseProvider.getDB (package:klient/database_provider.dart:42)
<asynchronous suspension>
#14     Student.fetchAll (package:klient/api/student.dart:35)
<asynchronous suspension>
#15     Client.getCurrentlySelected (package:klient/api/client.dart:131)
<asynchronous suspension>
#16     main (package:klient/main.dart:37)
<asynchronous suspension>

flutter: Deleting database
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: SqfliteFfiException(error, Invalid argument(s): Failed to load dynamic library 'libsqlite3.so': libsqlite3.so: Ne peut ouvrir le fichier d'objet partagé: Aucun fichier ou dossier de ce type}) DatabaseException(Invalid argument(s): Failed to load dynamic library 'libsqlite3.so': libsqlite3.so: Ne peut ouvrir le fichier d'objet partagé: Aucun fichier ou dossier de ce type)
#0      responseToResultOrThrow (package:sqflite_common_ffi/src/method_call.dart:123)
#1      SqfliteIsolate.handle (package:sqflite_common_ffi/src/isolate.dart:33)
<asynchronous suspension>
#2      _isolateHandle (package:sqflite_common_ffi/src/database_factory_ffi_io.dart:95)
<asynchronous suspension>
#3      ffiMethodCallhandleInIsolate (package:sqflite_common_ffi/src/database_factory_ffi_io.dart:50)
<asynchronous suspension>
#4      _SqfliteDatabaseFactoryImpl.invokeMethod (package:sqflite_common/src/mixin/factory.dart:22)
<asynchronous suspension>
#5      SqfliteDatabaseMixin.openDatabase (package:sqflite_common/src/database_mixin.dart:777)
<asynchronous suspension>
#6      SqfliteDatabaseMixin.doOpen (package:sqflite_common/src/database_mixin.dart:879)
<asynchronous suspension>
#7      SqfliteDatabaseOpenHelper.openDatabase (package:sqflite_common/src/database.dart:46)
<asynchronous suspension>
#8      SqfliteDatabaseFactoryMixin.openDatabase.<anonymous closure> (package:sqflite_common/src/factory_mixin.dart:110)
<asynchronous suspension>
#9      ReentrantLock.synchronized.<anonymous closure> (package:synchronized/src/reentrant_lock.dart:37)
<asynchronous suspension>
#10     BasicLock.synchronized (package:synchronized/src/basic_lock.dart:33)
<asynchronous suspension>
#11     DatabaseProvider.openDB (package:klient/database_provider.dart:256)
<asynchronous suspension>
#12     DatabaseProvider.initDB (package:klient/database_provider.dart:74)
<asynchronous suspension>
#13     DatabaseProvider.getDB (package:klient/database_provider.dart:42)
<asynchronous suspension>
#14     Student.fetchAll (package:klient/api/student.dart:35)
<asynchronous suspension>
#15     Client.getCurrentlySelected (package:klient/api/client.dart:131)
<asynchronous suspension>
#16     main (package:klient/main.dart:37)
<asynchronous suspension>

Pas de messages

Hello tout le monde.
Je sais pas si c'est normal mais au vu des screenshots dans le README non.
Je n'ai pas de messages qui s'affichent, quand je clique sur l'onglet Messagerie ça charge indéfiniement sans possibilité de voir un seul message.
Je sais pas comment résoudre ça ni même à quoi c'est dû
Des idées ?

Rewrite demo mode

Demo mode is mandatory for the play store, so I can't remove it entirely.

Wrong request in Initial Setup

Hello,
After testing the app on my android phone (in debug mode) I encountered an error on the Initial Setup page on the third step:

I/flutter (27833): Instance of 'NetworkException403'
I/flutter (27833): #0      Client.default403Handler (package:kosmos_client/api/client.dart:150:5)
I/flutter (27833): #1      Client.request (package:kosmos_client/api/client.dart:279:9)
I/flutter (27833): <asynchronous suspension>
I/flutter (27833): #2      DatabaseManager.fetchGradesData (package:kosmos_client/api/database_manager.dart:202:24)
I/flutter (27833): <asynchronous suspension>
I/flutter (27833): #3      DatabaseManager.downloadAll (package:kosmos_client/api/database_manager.dart:62:7)
I/flutter (27833): <asynchronous suspension>

And after some debug I found that the requested URL was {{endpoint}}/consulterNotes/idetablissement/0/ which is of course a wrong URL, next we can look at the stacktrace and find that the request have been sent from the method fetchGradesData, and here we can find the code that caused this error:

final result = await Global.client!
            .request(Action.getGrades, params: [Global.client!.idEtablissement ?? '0']);

So the error is just that Global.client!.idEtablissement is null (I used a student account for testing). So I think that this problem can be solved just by doing a request to fetch the infoUtilisateur before this request.

Change caching system

The database solution works fine right now but the new API would require a rewrite of the entire database structure and two separate parsing and serialization methods for each object (at least that's how I see it).

I think that from now on I'll just directly cache the request responses in json files (or in database entries depending on which is faster/mor practical), which will make it easier to handle.

Expired SSL Certificate Verification Method

Hello,

I'm confused about the method used to check if the SSL certificate is valid.
With this code, a self-signed certificate (not certified by a certification authority) could pass without problem and can endanger the security of communication with Skolengo APIs. This makes your app vulnerable to man-in-the-middle attacks.
If a specific certificate expiration error is returned by the http client, I recommend testing if the certificate is recognized as expired instead. This will at least ensure that it has been signed by a CA even if it's expired...
Commit: 5bfcd7e

Best regards

Fix build

Currently, if you attempt to build the project it looks for a .git/ORIG_HEAD file which is not present unless you do some git hackery.
Since the information given by this is not really important, it could be removed.
It would also be better if this caused a runtime and not compile time error.
Fixing this would also make CI builds easier/possible.

Bad translate

Hey,
There is an error in the french translate:
At the start of the app, when the app download data, it is translated "Téléchergement".

Add Authentication

The new authentication works with OpenID instead of with a username and activation code

  • Get credentials
  • Save credentials and school info

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.