diff --git a/.gitmodules b/.gitmodules index a1f2e7cd..58decc31 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ -[submodule "submodules/jellyfin_api"] - path = submodules/jellyfin_api - url = https://github.com/Kara-Zor-El/jellyfin_api [submodule "submodules/jellybook_epub_view"] path = submodules/jellybook_epub_view url = https://github.com/Kara-Zor-El/jellybook_epub_view +[submodule "submodules/tentacle"] + path = submodules/tentacle + url = https://github.com/TentacleOrg/Tentacle diff --git a/README.md b/README.md index e8c97f9a..a97481f2 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,9 @@ | **F-Droid** | Get it on IzzyOnDroid

Soon to be submitted to the F-Droid store

| | **Other Platforms** | If you would like to see this app on your platform, please open an issue and I will see what I can do. | +> [!NOTE] +> Any distribution platforms listed above I consider official and trusted. Any sources not listed above are not official and may contain malware and are to be used at your own risk. +
## :camera: Screenshots (and videos): diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 14cdb4b9..ace6ef18 100755 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -3,6 +3,7 @@ PODS: - Flutter - connectivity_plus (0.0.1): - Flutter + - FlutterMacOS - ReachabilitySwift - device_info_plus (0.0.1): - Flutter @@ -26,14 +27,14 @@ PODS: - Flutter - permission_handler_apple (9.3.0): - Flutter - - ReachabilitySwift (5.0.0) - - Sentry/HybridSDK (8.20.0): - - SentryPrivate (= 8.20.0) + - ReachabilitySwift (5.2.1) + - Sentry/HybridSDK (8.21.0): + - SentryPrivate (= 8.21.0) - sentry_flutter (0.0.1): - Flutter - FlutterMacOS - - Sentry/HybridSDK (= 8.20.0) - - SentryPrivate (8.20.0) + - Sentry/HybridSDK (= 8.21.0) + - SentryPrivate (8.21.0) - shared_preferences_foundation (0.0.1): - Flutter - FlutterMacOS @@ -43,15 +44,15 @@ PODS: - unrar_file (0.0.1): - Flutter - UnrarKit - - UnrarKit (2.9): - - UnrarKit/unrar-lib (= 2.9) - - UnrarKit/unrar-lib (2.9) + - UnrarKit (2.10): + - UnrarKit/unrar-lib (= 2.10) + - UnrarKit/unrar-lib (2.10) - url_launcher_ios (0.0.1): - Flutter DEPENDENCIES: - audioplayers_darwin (from `.symlinks/plugins/audioplayers_darwin/ios`) - - connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`) + - connectivity_plus (from `.symlinks/plugins/connectivity_plus/darwin`) - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) - Flutter (from `Flutter`) - flutter_background_service_ios (from `.symlinks/plugins/flutter_background_service_ios/ios`) @@ -80,7 +81,7 @@ EXTERNAL SOURCES: audioplayers_darwin: :path: ".symlinks/plugins/audioplayers_darwin/ios" connectivity_plus: - :path: ".symlinks/plugins/connectivity_plus/ios" + :path: ".symlinks/plugins/connectivity_plus/darwin" device_info_plus: :path: ".symlinks/plugins/device_info_plus/ios" Flutter: @@ -116,27 +117,27 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: audioplayers_darwin: 877d9a4d06331c5c374595e46e16453ac7eafa40 - connectivity_plus: bf0076dd84a130856aa636df1c71ccaff908fa1d + connectivity_plus: e2dad488011aeb593e219360e804c43cc1af5770 device_info_plus: c6fb39579d0f423935b0c9ce7ee2f44b71b9fce6 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 flutter_background_service_ios: e30e0d3ee69e4cee66272d0c78eacd48c2e94aac flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be - image_picker_ios: 99dfe1854b4fa34d0364e74a78448a0151025425 + image_picker_ios: b545a5f16c0fa88e3ecbbce3ed4de45567a8ec18 isar_flutter_libs: b69f437aeab9c521821c3f376198c4371fa21073 open_filex: 6e26e659846ec990262224a12ef1c528bb4edbe4 package_info_plus: 115f4ad11e0698c8c1c5d8a689390df880f47e85 path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c pdfx: 7b876b09de8b7a0bf444a4f82b439ffcff4ee1ec - permission_handler_apple: 036b856153a2b1f61f21030ff725f3e6fece2b78 - ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825 - Sentry: a8d7b373b9f9868442b02a0c425192f693103cbf - sentry_flutter: 03e7660857a8cdb236e71456a7e8447b65c8a788 - SentryPrivate: 006b24af16828441f70e2ab6adf241bd0a8ad130 + permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2 + ReachabilitySwift: 5ae15e16814b5f9ef568963fb2c87aeb49158c66 + Sentry: ebc12276bd17613a114ab359074096b6b3725203 + sentry_flutter: dff1df05dc39c83d04f9330b36360fc374574c5e + SentryPrivate: d651efb234cf385ec9a1cdd3eff94b5e78a0e0fe shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695 sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec unrar_file: ead248ffb2e777cb67f083bc1bb1fb45d4157dbd - UnrarKit: 99e3f0222a98a212188e1a6975dcf5aa798d26dd - url_launcher_ios: bbd758c6e7f9fd7b5b1d4cde34d2b95fcce5e812 + UnrarKit: 62f535c7a34ec52d2514b9b148f33dcfa9a9dc39 + url_launcher_ios: 6116280ddcfe98ab8820085d8d76ae7449447586 PODFILE CHECKSUM: 261aa5270d0bfaacfc50eed5f8260a8d156ff8c5 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj old mode 100755 new mode 100644 index 0fe5ae7e..b07bc2ff --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -140,6 +140,7 @@ 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 4703B9E427D52C737F4084E3 /* [CP] Embed Pods Frameworks */, + 2FA329B8FEA619317B636C63 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -199,6 +200,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 2FA329B8FEA619317B636C63 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; diff --git a/lib/l10n/app_cs.arb b/lib/l10n/app_cs.arb index 7fe00898..f65ac918 100644 --- a/lib/l10n/app_cs.arb +++ b/lib/l10n/app_cs.arb @@ -207,5 +207,7 @@ "yes": "Ano", "@yes": {}, "no": "Ne", - "@no": {} + "@no": {}, + "giveFeedback": "Zpětná vazba", + "@giveFeedback": {} } diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 5dd0ac76..13cdbf37 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -207,5 +207,7 @@ "yes": "Yes", "@yes": {}, "no": "No", - "@no": {} + "@no": {}, + "giveFeedback": "Give Feedback", + "@giveFeedback": {} } diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb index 5b662a4f..1d60ad13 100644 --- a/lib/l10n/app_es.arb +++ b/lib/l10n/app_es.arb @@ -207,5 +207,7 @@ "yes": "Sí", "@yes": {}, "no": "No", - "@no": {} + "@no": {}, + "giveFeedback": "Opinar", + "@giveFeedback": {} } diff --git a/lib/l10n/app_hr.arb b/lib/l10n/app_hr.arb index 08099118..6958f66f 100644 --- a/lib/l10n/app_hr.arb +++ b/lib/l10n/app_hr.arb @@ -136,7 +136,7 @@ "@dontBrewCoffee": {}, "refresh": "Aktualiziraj", "@refresh": {}, - "lightTheme": "Svjetla", + "lightTheme": "Svijetla", "@lightTheme": {}, "downloadingFile": "Preuzimanje datoteke:", "@downloadingFile": {}, @@ -205,5 +205,9 @@ "yes": "Da", "@yes": {}, "no": "Ne", - "@no": {} + "@no": {}, + "sentryExplanation": "Aktiviraj zapisivanje pomoću Sentry platforme za brzo dijagnosticiranje i rješavanje problema! To nam omogućuje praćenje grešaka u stvarnom vremenu bez ugrožavanja tvoje privatnosti. Pomogni podržati razvoj JellyBooka uključivanjem zapisivanja.", + "@sentryExplanation": {}, + "giveFeedback": "Pošalji povratnu informaciju", + "@giveFeedback": {} } diff --git a/lib/l10n/app_id.arb b/lib/l10n/app_id.arb index 9a1b2ec4..0ed29b31 100644 --- a/lib/l10n/app_id.arb +++ b/lib/l10n/app_id.arb @@ -115,5 +115,27 @@ "invalidCredentials": "Nama pengguna atau sandi salah", "@invalidCredentials": {}, "serverNotFound": "Server tidak ditemukan\nHarap periksa URL-nya", - "@serverNotFound": {} + "@serverNotFound": {}, + "systemTheme": "Sistem", + "@systemTheme": {}, + "lightTheme": "Terang", + "@lightTheme": {}, + "darkTheme": "Gelap", + "@darkTheme": {}, + "amoledTheme": "Amoled", + "@amoledTheme": {}, + "licenses": "Lisensi", + "@licenses": {}, + "pageLoginAddress": "Alamat Web", + "@pageLoginAddress": {}, + "reading": "Bacaan", + "@reading": {}, + "requestTimeout": "Batas waktu permintaan habis \nSilakan periksa log server", + "@requestTimeout": {}, + "badGateway": "Gateway buruk \nSilakan periksa log server", + "@badGateway": {}, + "proxyAuthRequired": "Diperlukan autentikasi proxy \nSilakan periksa log server", + "@proxyAuthRequired": {}, + "serverError": "Server error\nSilakan periksa log server", + "@serverError": {} } diff --git a/lib/l10n/app_pt.arb b/lib/l10n/app_pt.arb index c0426263..e3333950 100644 --- a/lib/l10n/app_pt.arb +++ b/lib/l10n/app_pt.arb @@ -199,5 +199,13 @@ "rating": "Avaliação: ", "@rating": {}, "saveToDevice": "Gravar no dispositivo", - "@saveToDevice": {} + "@saveToDevice": {}, + "useSentry": "Usar Sentinela", + "@useSentry": {}, + "yes": "Sim", + "@yes": {}, + "no": "Não", + "@no": {}, + "sentryExplanation": "Ative o registro do Sentinela para diagnosticar e corrigir problemas rapidamente! Isso nos fornece rastreamento de erros em tempo real sem comprometer sua privacidade. Por favor, ajude a apoiar o desenvolvimento do JellyBook ativando o registro.", + "@sentryExplanation": {} } diff --git a/lib/l10n/app_pt_BR.arb b/lib/l10n/app_pt_BR.arb new file mode 100644 index 00000000..20731453 --- /dev/null +++ b/lib/l10n/app_pt_BR.arb @@ -0,0 +1,212 @@ +{ + "pageLoginUsername": "Nome de usuário", + "@pageLoginUsername": {}, + "pageLoginPassword": "Senha", + "@pageLoginPassword": {}, + "pageLoginOfflineReader": "Leitor off-line", + "@pageLoginOfflineReader": {}, + "connect": "Conectar", + "@connect": {}, + "permissionExplanation": "JellyBook precisa de permissão para acessar seus arquivos para ler seus quadrinhos", + "@permissionExplanation": {}, + "ok": "OK", + "@ok": {}, + "downloadRequired": "Necessário baixar", + "@downloadRequired": {}, + "unsupportedFileType": "Tipo de arquivo não suportado", + "@unsupportedFileType": {}, + "unsupportedFileTypeExplanation": "JellyBook não suporta este tipo de arquivo. Baixe um arquivo diferente", + "@unsupportedFileTypeExplanation": {}, + "loadingComic": "Aguarde enquanto carregamos seu quadrinho/livro", + "@loadingComic": {}, + "refresh": "Atualizar", + "@refresh": {}, + "noResultsFound": "Nenhum resultado encontrado nesta pasta", + "@noResultsFound": {}, + "unknownError": "Ocorreu um erro desconhecido.", + "@unknownError": {}, + "error": "Erro", + "@error": {}, + "offlineBookReader": "Leitor de livros off-line", + "@offlineBookReader": {}, + "collections": "Coleções", + "@collections": {}, + "library": "Biblioteca", + "@library": {}, + "noContent": "Sinto muito, mas você ainda não baixou nenhum conteúdo.", + "@noContent": {}, + "noContent2": "Se você não estiver conectado à Internet, conecte-se à Internet e clique no botão Atualizar no canto superior esquerdo da tela.", + "@noContent2": {}, + "noBooks": "Nenhum livro encontrado", + "@noBooks": {}, + "waitToFetchDB": "Aguarde enquanto buscamos o conteúdo do banco de dados", + "@waitToFetchDB": {}, + "experimentalFeatures": "Recursos experimentais", + "@experimentalFeatures": {}, + "madeBy": "Feito por", + "@madeBy": {}, + "delete": "Excluir", + "@delete": {}, + "noResults": "Nenhum resultado encontrado", + "@noResults": {}, + "noHttp": "URL não contém http:// ou https://", + "@noHttp": {}, + "selectCategories": "Selecione uma categorias", + "@selectCategories": {}, + "noDot": "URL não contém um .", + "@noDot": {}, + "noSlash": "URL não contém um /", + "@noSlash": {}, + "systemTheme": "Sistema", + "@systemTheme": {}, + "selectAudioFile": "Selecione o arquivo de áudio", + "@selectAudioFile": {}, + "noAudiobooksDownloaded": "Nenhum audiolivro baixado", + "@noAudiobooksDownloaded": {}, + "pleaseDownloadAudiobookFirst": "Baixe um audiolivro primeiro", + "@pleaseDownloadAudiobookFirst": {}, + "readingDirection": "Direção de leitura", + "@readingDirection": {}, + "ltr": "Da esquerda para direita", + "@ltr": {}, + "rtl": "Direita para esquerda", + "@rtl": {}, + "vertical": "Vertical", + "@vertical": {}, + "downloadFailed": "O download não foi concluído. Por favor, tente novamente mais tarde.", + "@downloadFailed": {}, + "credits": "Créditos", + "@credits": {}, + "writer": "Escritor", + "@writer": {}, + "editor": "Editor", + "@editor": {}, + "colorist": "Colorista", + "@colorist": {}, + "letterer": "Cartaz", + "@letterer": {}, + "penciller": "Desenhador", + "@penciller": {}, + "publisher": "Editora", + "@publisher": {}, + "coverArtist": "Artista da capa", + "@coverArtist": {}, + "imprint": "Imprimir", + "@imprint": {}, + "read": "Ler", + "@read": {}, + "inker": "Tinta", + "@inker": {}, + "playbackSpeed": "Velocidade de reprodução", + "@playbackSpeed": {}, + "currentSpeed": "Velocidade atual:", + "@currentSpeed": {}, + "speedMultiplier": "x", + "@speedMultiplier": {}, + "verticalSeamless": "Rolagem vertical contínua", + "@verticalSeamless": {}, + "saveToServer": "Salvar no servidor", + "@saveToServer": {}, + "description": "Descrição: ", + "@description": {}, + "releaseDate": "Data de lançamento: ", + "@releaseDate": {}, + "rating": "Avaliação: ", + "@rating": {}, + "edit": "Editar", + "@edit": {}, + "yes": "Sim", + "@yes": {}, + "no": "Não", + "@no": {}, + "appName": "JellyBook", + "@appName": {}, + "pageLoginAddress": "Endereço da Web", + "@pageLoginAddress": {}, + "permissionRequired": "Permissão necessária", + "@permissionRequired": {}, + "downloadFirst": "Você precisa baixar o quadrinho primeiro", + "@downloadFirst": {}, + "downloadOffline": "Você está off-line, conecte-se à Internet e recarregue este aplicativo para baixar esta história em quadrinhos", + "@downloadOffline": {}, + "downloadExplanation": "JellyBook precisa baixar o quadrinho antes que você possa lê-lo", + "@downloadExplanation": {}, + "noBooksStarted": "Você ainda não iniciou nenhum livro/quadrinhos.", + "@noBooksStarted": {}, + "deleteConfirm": "Tem certeza de que deseja excluir este livro/quadrinho?", + "@deleteConfirm": {}, + "invalidUrl": "URL não válida. Verifique o URL e tente novamente.", + "@invalidUrl": {}, + "invalidCredentials": "Usuário ou senha incorretos", + "@invalidCredentials": {}, + "downloading": "Baixando", + "@downloading": {}, + "redownloadVerify": "Tem certeza de que deseja baixar este arquivo novamente?", + "@redownloadVerify": {}, + "downloadingFile": "Baixando arquivo:", + "@downloadingFile": {}, + "noBooksFound": "Nenhum livro foi encontrado para ser baixado", + "@noBooksFound": {}, + "serverNotFound": "Servidor não encontrado\nVerifique o URL", + "@serverNotFound": {}, + "searchBook": "Por favor procure um livro", + "@searchBook": {}, + "proxyAuthRequired": "Autenticação de proxy necessária\nPor favor, verifique os logs do servidor", + "@proxyAuthRequired": {}, + "redownload": "Baixar novamente", + "@redownload": {}, + "extractingContent": "Extraindo Conteúdo", + "@extractingContent": {}, + "requestTimeout": "Solicitar tempo limite\nPor favor, verifique os logs do servidor", + "@requestTimeout": {}, + "cancel": "Cancelar", + "@cancel": {}, + "pageTransition": "Transição de página", + "@pageTransition": {}, + "dontBrewCoffee": "Não faça café comigo. Eu sou um bule", + "@dontBrewCoffee": {}, + "serverError": "Erro de servidor\nPor favor, verifique os logs do servidor", + "@serverError": {}, + "fileDownloaded": "Arquivo baixado", + "@fileDownloaded": {}, + "badGateway": "Gateway ruim\nPor favor, verifique os logs do servidor", + "@badGateway": {}, + "home": "Início", + "@home": {}, + "downloads": "Transferências", + "@downloads": {}, + "lightTheme": "Claro", + "@lightTheme": {}, + "darkTheme": "Escuro", + "@darkTheme": {}, + "reading": "Leitura", + "@reading": {}, + "amoledTheme": "Amolado", + "@amoledTheme": {}, + "settings": "Configurações", + "@settings": {}, + "continueReading": "Continue lendo", + "@continueReading": {}, + "licenses": "Licenças", + "@licenses": {}, + "search": "Procurar", + "@search": {}, + "lookupMissingImages": "Pesquisar imagens ausentes", + "@lookupMissingImages": {}, + "theme": "Tema", + "@theme": {}, + "language": "Idioma", + "@language": {}, + "version": "Versão: ", + "@version": {}, + "unknown": "Desconhecido", + "@unknown": {}, + "saveToDevice": "Salvar no dispositivo", + "@saveToDevice": {}, + "useSentry": "Usar Sentinela", + "@useSentry": {}, + "sentryExplanation": "Ative o registro do Sentinela para diagnosticar e corrigir problemas rapidamente! Isso nos fornece rastreamento de erros em tempo real sem comprometer sua privacidade. Por favor, ajude a apoiar o desenvolvimento do JellyBook ativando o registro.", + "@sentryExplanation": {}, + "giveFeedback": "Dar comentários", + "@giveFeedback": {} +} diff --git a/lib/l10n/app_ru.arb b/lib/l10n/app_ru.arb index 3204591a..1842e021 100644 --- a/lib/l10n/app_ru.arb +++ b/lib/l10n/app_ru.arb @@ -120,7 +120,7 @@ "@requestTimeout": {}, "dontBrewCoffee": "Не варите со мной кофе. Я чайник", "@dontBrewCoffee": {}, - "badGateway": "Bad gateway\nПожалуйста, проверьте логи сервера", + "badGateway": "Bad gateway (Плохой шлюз)\nПожалуйста, проверьте логи сервера", "@badGateway": {}, "permissionRequired": "Требуется разрешение", "@permissionRequired": {}, @@ -187,5 +187,25 @@ "amoledTheme": "AMOLED", "@amoledTheme": {}, "credits": "Заслуги", - "@credits": {} + "@credits": {}, + "releaseDate": "Дата выхода: ", + "@releaseDate": {}, + "description": "Описание: ", + "@description": {}, + "rating": "Рейтинг: ", + "@rating": {}, + "saveToDevice": "Сохранить на устройство", + "@saveToDevice": {}, + "saveToServer": "Сохранить на сервер", + "@saveToServer": {}, + "edit": "Редактировать", + "@edit": {}, + "useSentry": "Использовать Sentry", + "@useSentry": {}, + "sentryExplanation": "Включите Sentry логирование, что бы быстро диагностировать и чинить неисправности! Это даст нам возможность отслеживать неполадки в реально времени, зберегая вашу конфиденциальность. Пожалуйста поддержите развитие JellyBook включив логирование.", + "@sentryExplanation": {}, + "yes": "Да", + "@yes": {}, + "no": "Нет", + "@no": {} } diff --git a/lib/l10n/app_uk.arb b/lib/l10n/app_uk.arb index 26be1404..43b58d43 100644 --- a/lib/l10n/app_uk.arb +++ b/lib/l10n/app_uk.arb @@ -6,7 +6,7 @@ "@pageLoginUsername": {}, "pageLoginOfflineReader": "Офлайн-читалка", "@pageLoginOfflineReader": {}, - "connect": "Підключатися", + "connect": "Підключитися", "@connect": {}, "permissionRequired": "Потрібен дозвіл", "@permissionRequired": {}, @@ -98,7 +98,7 @@ "@noContent2": {}, "noBooks": "Книжок не знайдено", "@noBooks": {}, - "madeBy": "Зробив", + "madeBy": "Зроблено", "@madeBy": {}, "delete": "Видалити", "@delete": {}, @@ -122,7 +122,7 @@ "@noDot": {}, "invalidCredentials": "Неправильне ім'я користувача або пароль", "@invalidCredentials": {}, - "badGateway": "Bad gateway\nБудь ласка, перевірте логи сервера", + "badGateway": "Bad gateway (Поганий шлюз)\nБудь ласка, перевірте логи сервера", "@badGateway": {}, "serverNotFound": "Сервер не знайдено\nБудь ласка, перевірте URL-адресу", "@serverNotFound": {}, @@ -130,22 +130,82 @@ "@proxyAuthRequired": {}, "serverError": "Помилка сервера\nБудь ласка, перевірте логи сервера", "@serverError": {}, - "selectAudioFile": "Виберіть аудіофайл", + "selectAudioFile": "Оберіть аудіофайл", "@selectAudioFile": {}, "noAudiobooksDownloaded": "Немає завантажених аудіокниг", "@noAudiobooksDownloaded": {}, "pleaseDownloadAudiobookFirst": "Будь ласка, спочатку завантажте аудіокнигу", "@pleaseDownloadAudiobookFirst": {}, - "systemTheme": "Система", + "systemTheme": "Системна", "@systemTheme": {}, - "lightTheme": "Світлий", + "lightTheme": "Світла", "@lightTheme": {}, - "darkTheme": "Темний", + "darkTheme": "Темна", "@darkTheme": {}, "amoledTheme": "Амолед", "@amoledTheme": {}, "licenses": "Ліцензії", "@licenses": {}, "lookupMissingImages": "Пошук відсутніх зображень", - "@lookupMissingImages": {} + "@lookupMissingImages": {}, + "useSentry": "Використовувати Sentry", + "@useSentry": {}, + "credits": "Титри", + "@credits": {}, + "imprint": "Видавничий бренд", + "@imprint": {}, + "penciller": "Художник-карандашист", + "@penciller": {}, + "writer": "Автор", + "@writer": {}, + "editor": "Редактор", + "@editor": {}, + "letterer": "Літератор", + "@letterer": {}, + "colorist": "Колорист", + "@colorist": {}, + "publisher": "Видавник", + "@publisher": {}, + "coverArtist": "Художник обкладинки", + "@coverArtist": {}, + "read": "Прочитано", + "@read": {}, + "inker": "Чорнильщик", + "@inker": {}, + "readingDirection": "Напрямок читання", + "@readingDirection": {}, + "ltr": "Зліва на право", + "@ltr": {}, + "rtl": "Справа наліво", + "@rtl": {}, + "vertical": "Вертикально", + "@vertical": {}, + "downloadFailed": "Не вдалося завершити завантаження. Будь ласка спробуйте пізніше.", + "@downloadFailed": {}, + "verticalSeamless": "Плавне вертикальне прокручування", + "@verticalSeamless": {}, + "playbackSpeed": "Швидкість відтворення", + "@playbackSpeed": {}, + "currentSpeed": "Поточна швидкість:", + "@currentSpeed": {}, + "speedMultiplier": "х", + "@speedMultiplier": {}, + "releaseDate": "Дата видачі: ", + "@releaseDate": {}, + "description": "Опис: ", + "@description": {}, + "rating": "Рейтинг: ", + "@rating": {}, + "saveToDevice": "Зберегти на пристрій", + "@saveToDevice": {}, + "saveToServer": "Зберегти на сервер", + "@saveToServer": {}, + "edit": "Редагувати", + "@edit": {}, + "sentryExplanation": "Увімкніть логування Sentry, щоб швидкого діагностування та полагодження несправностей! Це надасть нам можливість відстежувати несправності у реальному часі, не порушуючи вашої конфіденційності. Будь ласка підтримайте розвиток JellyBook, увімкнувши Sentry логування.", + "@sentryExplanation": {}, + "yes": "Так", + "@yes": {}, + "no": "Ні", + "@no": {} } diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index ed23d55e..8afb0d03 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -207,5 +207,7 @@ "yes": "是", "@yes": {}, "no": "否", - "@no": {} + "@no": {}, + "giveFeedback": "给予反馈", + "@giveFeedback": {} } diff --git a/lib/providers/fetchBooks.dart b/lib/providers/fetchBooks.dart index 48bce764..33efbdc0 100644 --- a/lib/providers/fetchBooks.dart +++ b/lib/providers/fetchBooks.dart @@ -2,7 +2,7 @@ import 'package:dio/dio.dart'; import 'package:shared_preferences/shared_preferences.dart'; -import 'package:openapi/openapi.dart'; +import 'package:tentacle/tentacle.dart'; import 'package:built_collection/built_collection.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; @@ -46,7 +46,7 @@ Future getComics(String comicsId) async { ]); // turn into built list - final api = Openapi(basePathOverride: url).getItemsApi(); + final api = Tentacle(basePathOverride: url).getItemsApi(); Response? response; bool useSentry = prefs.getBool('useSentry') ?? false; try { diff --git a/lib/providers/fetchCategories.dart b/lib/providers/fetchCategories.dart index 28bfd9fb..01cce4ab 100644 --- a/lib/providers/fetchCategories.dart +++ b/lib/providers/fetchCategories.dart @@ -1,7 +1,7 @@ // The purpose of this file is to fetch the categories from the database import 'package:shared_preferences/shared_preferences.dart'; -import 'package:openapi/openapi.dart'; +import 'package:tentacle/tentacle.dart'; import 'package:jellybook/providers/fetchBooks.dart'; import 'package:jellybook/providers/folderProvider.dart'; import 'package:jellybook/models/entry.dart'; @@ -50,7 +50,7 @@ Future<(List, List)> getServerCategories({ logger.d("got prefs"); Map headers = getHeaders(url, client, device, deviceId, version, token); - final api = Openapi(basePathOverride: url).getUserViewsApi(); + final api = Tentacle(basePathOverride: url).getUserViewsApi(); var response; try { response = await api.getUserViews( diff --git a/lib/providers/login.dart b/lib/providers/login.dart index 2dfd5559..e9afa844 100644 --- a/lib/providers/login.dart +++ b/lib/providers/login.dart @@ -11,7 +11,7 @@ import 'package:package_info_plus/package_info_plus.dart' as package_info; import 'package:isar/isar.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:jellybook/models/login.dart'; -import 'package:openapi/openapi.dart'; +import 'package:tentacle/tentacle.dart'; import 'package:device_info_plus/device_info_plus.dart'; import 'package:jellybook/variables.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; @@ -95,12 +95,12 @@ class LoginProvider { "URL is not valid. Please check the URL and try again."; } - final api = Openapi(basePathOverride: _url); + final api = Tentacle(basePathOverride: _url); final apiInstance = api.getUserApi(); Response response; try { - // use the authenticateUserByNameRequest from openapi/lib/src/model/authenticate_user_by_name_request.g.dart + // use the authenticateUserByNameRequest from tentacle/lib/src/model/authenticate_user_by_name_request.g.dart var authenticateUserByNameRequest = AuthenticateUserByNameRequest((b) => b ..username = username ..pw = password); diff --git a/lib/providers/updateLike.dart b/lib/providers/updateLike.dart index 36893031..ee391029 100644 --- a/lib/providers/updateLike.dart +++ b/lib/providers/updateLike.dart @@ -2,7 +2,7 @@ import 'package:isar/isar.dart'; import 'package:jellybook/models/entry.dart'; -import 'package:openapi/openapi.dart'; +import 'package:tentacle/tentacle.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:package_info_plus/package_info_plus.dart' as p_info; import 'package:jellybook/variables.dart'; @@ -38,7 +38,7 @@ Future updateLike(String id) async { 'Host': server.substring(server.indexOf("//") + 2, server.length), 'Content-Length': '0', }; - final api = Openapi(basePathOverride: server).getUserLibraryApi(); + final api = Tentacle(basePathOverride: server).getUserLibraryApi(); logger.d(url); bool useSentry = prefs.getBool('useSentry') ?? false; if (entries?.isFavorited == false) { diff --git a/lib/providers/updatePagenum.dart b/lib/providers/updatePagenum.dart index ace20c1d..89fa52a5 100644 --- a/lib/providers/updatePagenum.dart +++ b/lib/providers/updatePagenum.dart @@ -1,5 +1,5 @@ // the purpose of this file is to update the page number of the current page on jellyfin -import 'package:openapi/openapi.dart'; +import 'package:tentacle/tentacle.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:package_info_plus/package_info_plus.dart' as p_info; import 'package:jellybook/variables.dart'; @@ -31,7 +31,7 @@ Future updatePagenum(String id, int pagenum) async { 'Host': server.substring(server.indexOf("//") + 2, server.length), 'Content-Length': '0', }; - final api = Openapi(basePathOverride: server).getPlaystateApi(); + final api = Tentacle(basePathOverride: server).getPlaystateApi(); try { final response = await api.onPlaybackProgress( userId: userId, diff --git a/lib/screens/EditScreen.dart b/lib/screens/EditScreen.dart index b9611939..4cbea24b 100644 --- a/lib/screens/EditScreen.dart +++ b/lib/screens/EditScreen.dart @@ -18,7 +18,7 @@ import 'package:jellybook/models/entry.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:jellybook/variables.dart'; import 'package:package_info_plus/package_info_plus.dart' as p_info; -import 'package:openapi/openapi.dart'; +import 'package:tentacle/tentacle.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:image_picker/image_picker.dart'; import 'package:built_collection/built_collection.dart'; @@ -185,7 +185,7 @@ class _EditScreenState extends State { 'Origin': server, 'Host': server.substring(server.indexOf("//") + 2, server.length), }; - final api = Openapi(basePathOverride: server).getItemUpdateApi(); + final api = Tentacle(basePathOverride: server).getItemUpdateApi(); DateTime? dateTime; bool useSentry = prefs.getBool('useSentry') ?? false; try { @@ -245,7 +245,7 @@ class _EditScreenState extends State { ); } if (imageChanged) { - final api2 = Openapi(basePathOverride: server).getImageApi(); + final api2 = Tentacle(basePathOverride: server).getImageApi(); // get the image encoded in base64 File imagefile = File(entry.imagePath); MultipartFile file = await MultipartFile.fromFile( diff --git a/lib/screens/MainScreens/settingsScreen.dart b/lib/screens/MainScreens/settingsScreen.dart index abfc90b8..fe4be7b8 100644 --- a/lib/screens/MainScreens/settingsScreen.dart +++ b/lib/screens/MainScreens/settingsScreen.dart @@ -16,7 +16,7 @@ import 'package:jellybook/variables.dart'; import 'package:palette_generator/palette_generator.dart'; import 'package:sentry/sentry.dart'; -import 'package:openapi/openapi.dart'; +import 'package:tentacle/tentacle.dart'; class SettingsScreen extends StatefulWidget { @override @@ -309,7 +309,7 @@ class _SettingsScreenState extends State { 'Host': server.substring(server.indexOf("//") + 2, server.length), 'Content-Length': '0', }; - final api = Openapi(basePathOverride: server).getImageApi(); + final api = Tentacle(basePathOverride: server).getImageApi(); Uint8List image = Uint8List(0); ImageProvider imageProvider = Image.asset('assets/images/Logo.png').image; try { diff --git a/lib/screens/collectionScreen.dart b/lib/screens/collectionScreen.dart index 73f00979..87227a51 100644 --- a/lib/screens/collectionScreen.dart +++ b/lib/screens/collectionScreen.dart @@ -96,8 +96,10 @@ class _collectionScreenState extends State { ), ); if (result != null) { - snapshot.data[index].isFavorited = result.$1; - snapshot.data[index].downloaded = result.$2; + snapshot.data[index].isFavorited = + result.$1 ?? snapshot.data[index].isFavorited; + snapshot.data[index].downloaded = + result.$2 ?? snapshot.data[index].downloaded; await isar?.writeTxn(() async { await isar?.entrys.put(snapshot.data[index]); }); diff --git a/lib/screens/downloaderScreen.dart b/lib/screens/downloaderScreen.dart index 68e76b19..4dac038b 100644 --- a/lib/screens/downloaderScreen.dart +++ b/lib/screens/downloaderScreen.dart @@ -15,7 +15,7 @@ import 'package:unrar_file/unrar_file.dart'; import 'package:jellybook/providers/fileNameFromTitle.dart'; import 'package:jellybook/providers/parseEpub.dart'; import 'package:jellybook/providers/ComicInfoXML.dart'; -import 'package:openapi/openapi.dart'; +import 'package:tentacle/tentacle.dart'; // import the database import 'package:jellybook/models/entry.dart'; @@ -153,7 +153,7 @@ class _DownloadScreenState extends State { entry.filePath = dir; logger.d('Directory created'); logger.d('Attempting to download file'); - final api = Openapi(basePathOverride: entry.url).getLibraryApi(); + final api = Tentacle(basePathOverride: entry.url).getLibraryApi(); Response download; downloading = true; download = await api diff --git a/lib/screens/homeScreen.dart b/lib/screens/homeScreen.dart index 5ecdfae9..75c5489b 100644 --- a/lib/screens/homeScreen.dart +++ b/lib/screens/homeScreen.dart @@ -47,14 +47,15 @@ class _HomeScreenState extends State { @override void initState() { - Connectivity().onConnectivityChanged.listen((ConnectivityResult result) { + Connectivity() + .onConnectivityChanged + .listen((List status) { // Get the network status - var status = result; if (prefs == null) { setSharedPrefs(); } // if the user is offline - if (status == ConnectivityResult.none) { + if (status.contains(ConnectivityResult.none)) { // show the offline book reader Navigator.push( context, diff --git a/lib/screens/infoScreen.dart b/lib/screens/infoScreen.dart index c19d8214..72760512 100644 --- a/lib/screens/infoScreen.dart +++ b/lib/screens/infoScreen.dart @@ -19,7 +19,7 @@ import 'package:jellybook/models/entry.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:jellybook/variables.dart'; import 'package:package_info_plus/package_info_plus.dart' as p_info; -import 'package:openapi/openapi.dart'; +import 'package:tentacle/tentacle.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:jellybook/providers/Author.dart'; @@ -274,7 +274,7 @@ class _InfoScreenState extends State { 'Content-Length': '0', }; - final api = Openapi(basePathOverride: server).getPersonsApi(); + final api = Tentacle(basePathOverride: server).getPersonsApi(); final person = await api.getPerson(name: author, headers: headers); if (person.data!.imageTags == null || person.data!.imageTags!.isEmpty) { return "asset"; diff --git a/lib/screens/offlineBookReader.dart b/lib/screens/offlineBookReader.dart index 07b84ec5..be77b16d 100644 --- a/lib/screens/offlineBookReader.dart +++ b/lib/screens/offlineBookReader.dart @@ -41,12 +41,13 @@ class _OfflineBookReaderState extends State { @override void initState() { - Connectivity().onConnectivityChanged.listen((ConnectivityResult result) { - var status = result; + Connectivity() + .onConnectivityChanged + .listen((List status) { // if the user is online - if (status == ConnectivityResult.wifi || - status == ConnectivityResult.mobile || - status == ConnectivityResult.ethernet) { + if (status.contains(ConnectivityResult.wifi) || + status.contains(ConnectivityResult.mobile) || + status.contains(ConnectivityResult.ethernet)) { final isar = Isar.getInstance(); final login = isar!.logins.where().findFirstSync(); if (login!.serverUrl.isNotEmpty && login.username.isNotEmpty) { @@ -84,7 +85,7 @@ class _OfflineBookReaderState extends State { // create a listener to see if the user is online or offline Future checkConnectivity() async { var connectivityResult = await (Connectivity().checkConnectivity()); - if (connectivityResult == ConnectivityResult.none) { + if (connectivityResult.contains(ConnectivityResult.none)) { return false; } else { return true; diff --git a/lib/screens/readingScreens/epubReader.dart b/lib/screens/readingScreens/epubReader.dart index cc0ca2f1..7b72e83d 100644 --- a/lib/screens/readingScreens/epubReader.dart +++ b/lib/screens/readingScreens/epubReader.dart @@ -3,7 +3,7 @@ import 'dart:io'; import 'package:flutter/material.dart'; // import 'package:epub_view_enhanced/epub_view_enhanced.dart'; -import 'package:jellybook_epub_view/epub_view.dart'; +import 'package:jellybook_epub_view/jellybook_epub_view.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:isar/isar.dart'; import 'package:isar_flutter_libs/isar_flutter_libs.dart'; diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index 726c8b0d..56f3d0e8 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -7,20 +7,28 @@ #include "generated_plugin_registrant.h" #include +#include #include #include +#include #include void fl_register_plugins(FlPluginRegistry* registry) { g_autoptr(FlPluginRegistrar) audioplayers_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "AudioplayersLinuxPlugin"); audioplayers_linux_plugin_register_with_registrar(audioplayers_linux_registrar); + g_autoptr(FlPluginRegistrar) file_selector_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin"); + file_selector_plugin_register_with_registrar(file_selector_linux_registrar); g_autoptr(FlPluginRegistrar) flutter_secure_storage_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterSecureStorageLinuxPlugin"); flutter_secure_storage_linux_plugin_register_with_registrar(flutter_secure_storage_linux_registrar); g_autoptr(FlPluginRegistrar) isar_flutter_libs_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "IsarFlutterLibsPlugin"); isar_flutter_libs_plugin_register_with_registrar(isar_flutter_libs_registrar); + g_autoptr(FlPluginRegistrar) sentry_flutter_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "SentryFlutterPlugin"); + sentry_flutter_plugin_register_with_registrar(sentry_flutter_registrar); g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 557d1b24..548341a3 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -4,8 +4,10 @@ list(APPEND FLUTTER_PLUGIN_LIST audioplayers_linux + file_selector_linux flutter_secure_storage_linux isar_flutter_libs + sentry_flutter url_launcher_linux ) diff --git a/pubspec.lock b/pubspec.lock index 10a75514..0162182b 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -253,18 +253,18 @@ packages: dependency: "direct main" description: name: connectivity_plus - sha256: "224a77051d52a11fbad53dd57827594d3bd24f945af28bd70bab376d68d437f0" + sha256: e9feae83b1849f61bad9f6f33ee00646e3410d54ce0821e02f262f9901dad3c9 url: "https://pub.dev" source: hosted - version: "5.0.2" + version: "6.0.1" connectivity_plus_platform_interface: dependency: transitive description: name: connectivity_plus_platform_interface - sha256: cf1d1c28f4416f8c654d7dc3cd638ec586076255d407cef3ddbdaf178272a71a + sha256: b6a56efe1e6675be240de39107281d4034b64ac23438026355b4234042a35adb url: "https://pub.dev" source: hosted - version: "1.2.4" + version: "2.0.0" convert: dependency: transitive description: @@ -357,10 +357,10 @@ packages: dependency: "direct main" description: name: dio - sha256: "49af28382aefc53562459104f64d16b9dfd1e8ef68c862d5af436cc8356ce5a8" + sha256: "50fec96118958b97c727d0d8f67255d3683f16cc1f90d9bc917b5d4fe3abeca9" url: "https://pub.dev" source: hosted - version: "5.4.1" + version: "5.4.2" drop_cap_text: dependency: "direct main" description: @@ -514,10 +514,10 @@ packages: dependency: "direct dev" description: name: flutter_lints - sha256: e2a421b7e59244faef694ba7b30562e489c2b489866e505074eb005cd7060db7 + sha256: "9e8c3858111da373efc5aa341de011d9bd23e2c5c5e0c62bccf32438e192d7b1" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" flutter_localizations: dependency: "direct main" description: flutter @@ -527,10 +527,10 @@ packages: dependency: "direct main" description: name: flutter_markdown - sha256: "21b085a1c185e46701373866144ced56cfb7a0c33f63c916bb8fe2d0c1491278" + sha256: "87e11b9df25a42e2db315b8b7a51fae8e66f57a4b2f50ec4b822d0fa155e6b52" url: "https://pub.dev" source: hosted - version: "0.6.19" + version: "0.6.22" flutter_plugin_android_lifecycle: dependency: transitive description: @@ -732,10 +732,10 @@ packages: dependency: transitive description: name: image_picker_ios - sha256: fadafce49e8569257a0cad56d24438a6fa1f0cbd7ee0af9b631f7492818a4ca3 + sha256: "917a5cadd67d052554cfb258595e54217de53fac5b52939426e26319a02e6297" url: "https://pub.dev" source: hosted - version: "0.8.9+1" + version: "0.8.9+2" image_picker_linux: dependency: transitive description: @@ -756,10 +756,10 @@ packages: dependency: transitive description: name: image_picker_platform_interface - sha256: fa4e815e6fcada50e35718727d83ba1c92f1edf95c0b4436554cec301b56233b + sha256: "3d2c323daea9d60608f1caf30be32a938916f4975434b8352e6f73dae496da38" url: "https://pub.dev" source: hosted - version: "2.9.3" + version: "2.9.4" image_picker_windows: dependency: transitive description: @@ -788,18 +788,10 @@ packages: dependency: "direct main" description: name: intl - sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" - url: "https://pub.dev" - source: hosted - version: "0.18.1" - intl_utils: - dependency: "direct main" - description: - name: intl_utils - sha256: "5cad11e11ff7662c3cd0ef04729248591d71ed023d4ef0903a137528b4568adf" + sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf url: "https://pub.dev" source: hosted - version: "2.8.5" + version: "0.19.0" io: dependency: transitive description: @@ -835,11 +827,9 @@ packages: jellybook_epub_view: dependency: "direct main" description: - path: "." - ref: HEAD - resolved-ref: e7eac4b6ad357c498ff7b204891db33b7935b22c - url: "https://github.com/Kara-Zor-El/jellybook_epub_view.git" - source: git + path: "submodules/jellybook_epub_view" + relative: true + source: path version: "3.0.0" js: dependency: transitive @@ -885,10 +875,10 @@ packages: dependency: "direct main" description: name: logger - sha256: "6bbb9d6f7056729537a4309bda2e74e18e5d9f14302489cc1e93f33b3fe32cac" + sha256: "8c94b8c219e7e50194efc8771cd0e9f10807d8d3e219af473d89b06cc2ee4e04" url: "https://pub.dev" source: hosted - version: "2.0.2+1" + version: "2.2.0" logging: dependency: transitive description: @@ -901,10 +891,10 @@ packages: dependency: transitive description: name: markdown - sha256: "1b134d9f8ff2da15cb298efe6cd8b7d2a78958c1b00384ebcbdf13fe340a6c90" + sha256: ef2a1298144e3f985cc736b22e0ccdaf188b5b3970648f2d9dc13efd1d9df051 url: "https://pub.dev" source: hosted - version: "7.2.1" + version: "7.2.2" matcher: dependency: transitive description: @@ -925,10 +915,10 @@ packages: dependency: transitive description: name: meta - sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 + sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.12.0" mime: dependency: transitive description: @@ -993,15 +983,6 @@ packages: url: "https://pub.dev" source: hosted version: "4.4.0" - openapi: - dependency: "direct main" - description: - path: "." - ref: HEAD - resolved-ref: f1ec0659fd18d1ba338c4560fff5cfa21668468f - url: "https://github.com/Kara-Zor-El/jellyfin_api.git" - source: git - version: "1.0.0" package_config: dependency: transitive description: @@ -1110,10 +1091,10 @@ packages: dependency: "direct main" description: name: permission_handler - sha256: "74e962b7fad7ff75959161bb2c0ad8fe7f2568ee82621c9c2660b751146bfe44" + sha256: "18bf33f7fefbd812f37e72091a15575e72d5318854877e0e4035a24ac1113ecb" url: "https://pub.dev" source: hosted - version: "11.3.0" + version: "11.3.1" permission_handler_android: dependency: transitive description: @@ -1126,10 +1107,10 @@ packages: dependency: transitive description: name: permission_handler_apple - sha256: bdafc6db74253abb63907f4e357302e6bb786ab41465e8635f362ee71fd8707b + sha256: e9ad66020b89ff1b63908f247c2c6f931c6e62699b756ef8b3c4569350cd8662 url: "https://pub.dev" source: hosted - version: "9.4.0" + version: "9.4.4" permission_handler_html: dependency: transitive description: @@ -1142,10 +1123,10 @@ packages: dependency: transitive description: name: permission_handler_platform_interface - sha256: "23dfba8447c076ab5be3dee9ceb66aad345c4a648f0cac292c77b1eb0e800b78" + sha256: "48d4fcf201a1dad93ee869ab0d4101d084f49136ec82a8a06ed9cfeacab9fd20" url: "https://pub.dev" source: hosted - version: "4.2.0" + version: "4.2.1" permission_handler_windows: dependency: transitive description: @@ -1222,10 +1203,10 @@ packages: dependency: "direct main" description: name: provider - sha256: "9a96a0a19b594dbc5bf0f1f27d2bc67d5f95957359b461cd9feb44ed6ae75096" + sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c url: "https://pub.dev" source: hosted - version: "6.1.1" + version: "6.1.2" pub_semver: dependency: transitive description: @@ -1270,10 +1251,10 @@ packages: dependency: transitive description: name: sentry - sha256: d2ee9c850d876d285f22e2e662f400ec2438df9939fe4acd5d780df9841794ce + sha256: a460aa48568d47140dd0557410b624d344ffb8c05555107ac65035c1097cf1ad url: "https://pub.dev" source: hosted - version: "7.16.1" + version: "7.18.0" sentry_dart_plugin: dependency: "direct dev" description: @@ -1286,10 +1267,10 @@ packages: dependency: "direct main" description: name: sentry_flutter - sha256: "5b428c189c825f16fb14e9166529043f06b965d5b59bfc3a1415e39c082398c0" + sha256: "3d0d1d4e0e407d276ae8128d123263ccbc37e988bae906765efd6f37d544f4c6" url: "https://pub.dev" source: hosted - version: "7.16.1" + version: "7.18.0" shared_preferences: dependency: "direct main" description: @@ -1451,10 +1432,10 @@ packages: dependency: transitive description: name: sqflite_common - sha256: "28d8c66baee4968519fb8bd6cdbedad982d6e53359091f0b74544a9f32ec72d5" + sha256: "3da423ce7baf868be70e2c0976c28a1bb2f73644268b7ffa7d2e08eab71f16a4" url: "https://pub.dev" source: hosted - version: "2.5.3" + version: "2.5.4" stack_trace: dependency: transitive description: @@ -1511,6 +1492,13 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.0" + tentacle: + dependency: "direct main" + description: + path: "submodules/tentacle" + relative: true + source: path + version: "3.1.0" term_glyph: dependency: transitive description: @@ -1611,10 +1599,10 @@ packages: dependency: "direct main" description: name: url_launcher - sha256: c512655380d241a337521703af62d2c122bf7b77a46ff7dd750092aa9433499c + sha256: "0ecc004c62fd3ed36a2ffcbe0dd9700aee63bd7532d0b642a488b1ec310f492e" url: "https://pub.dev" source: hosted - version: "6.2.4" + version: "6.2.5" url_launcher_android: dependency: transitive description: @@ -1627,10 +1615,10 @@ packages: dependency: transitive description: name: url_launcher_ios - sha256: "75bb6fe3f60070407704282a2d295630cab232991eb52542b18347a8a941df03" + sha256: "9149d493b075ed740901f3ee844a38a00b33116c7c5c10d7fb27df8987fb51d5" url: "https://pub.dev" source: hosted - version: "6.2.4" + version: "6.2.5" url_launcher_linux: dependency: transitive description: @@ -1691,10 +1679,10 @@ packages: dependency: transitive description: name: vm_service - sha256: a2662fb1f114f4296cf3f5a50786a2d888268d7776cf681aa17d660ffa23b246 + sha256: a75f83f14ad81d5fe4b3319710b90dec37da0e22612326b696c9e1b8f34bbf48 url: "https://pub.dev" source: hosted - version: "14.0.0" + version: "14.2.0" watcher: dependency: transitive description: @@ -1731,10 +1719,10 @@ packages: dependency: transitive description: name: win32 - sha256: "464f5674532865248444b4c3daca12bd9bf2d7c47f759ce2617986e7229494a8" + sha256: "8cb58b45c47dcb42ab3651533626161d6b67a2921917d8d429791f76972b3480" url: "https://pub.dev" source: hosted - version: "5.2.0" + version: "5.3.0" win32_registry: dependency: transitive description: @@ -1776,5 +1764,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.3.0-279.1.beta <4.0.0" - flutter: ">=3.16.0" + dart: ">=3.3.0 <4.0.0" + flutter: ">=3.19.0" diff --git a/pubspec.yaml b/pubspec.yaml index 8f9c702a..08742a53 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -54,8 +54,8 @@ dependencies: # flutter_pdfview: ^1.2.5 open_filex: ^4.3.1 jellybook_epub_view: - git: https://github.com/Kara-Zor-El/jellybook_epub_view.git - # path: ./submodules/jellybook_epub_view + # git: https://github.com/Kara-Zor-El/jellybook_epub_view.git + path: ./submodules/jellybook_epub_view isar: ^3.0.5 isar_flutter_libs: ^3.0.5 pdfx: ^2.6.0 @@ -64,16 +64,15 @@ dependencies: google_nav_bar: ^5.0.6 cached_network_image: ^3.2.3 fancy_shimmer_image: ^2.0.2 - openapi: - git: https://github.com/Kara-Zor-El/jellyfin_api.git + tentacle: + path: ./submodules/tentacle/ string_similarity: ^2.0.0 - connectivity_plus: ^5.0.1 + connectivity_plus: ^6.0.1 # Translations flutter_localizations: sdk: flutter - intl: ^0.18.0 - intl_utils: ^2.8.2 + intl: ^0.19.0 device_info_plus: ^9.0.3 audioplayers: ^5.1.0 flutter_background_service: ^5.0.0 diff --git a/submodules/jellyfin_api b/submodules/jellyfin_api deleted file mode 160000 index f1ec0659..00000000 --- a/submodules/jellyfin_api +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f1ec0659fd18d1ba338c4560fff5cfa21668468f