WebShare is a Android application that enables you to effortlessly share files and text locally using your browser. With its user-friendly interface and robust features, WebShare simplifies the process of sharing data between devices connected to the same network.
Key Features:
-
Seamless File and Text Sharing: Share files and text seamlessly between your Android device and any browser on the local network.
-
Enhanced Security: Protect your shared content with a secure PIN.
-
User Management: Manage and control access privileges, such as blocking or granting user access.
- Kotlin based, Coroutines for asynchronous.
- Jetpack
- Navigation: Helps you implement navigation, With a navigation graph.
- Lifecycle: Observe Android lifecycles and handle UI states upon the lifecycle changes.
- Room: Constructs Database by providing an abstraction layer over SQLite to allow fluent database access.
- Moshi: A modern JSON library for Kotlin and Java.
- Material-Components: Material design components for TabLayout, Switch.
- Glide: Loading images.
- Coil: For loading svg files.
Android app: app/src/main/java/ss/nscube/webshare
├── db
│ ├── AppDatabase.kt
│ ├── daos
│ │ └── TextDAO.kt
│ ├── DatabaseHelper.kt
│ └── entities
│ └── TextEntity.kt
├── server
│ ├── events
│ │ └── ServerStatusListener.java
│ ├── Exceptions.kt
│ ├── file
│ │ ├── AppFolderManager.kt
│ │ ├── DownloadManager.kt
│ │ ├── FileDownloader.kt
│ │ ├── FileTransferListener.kt
│ │ ├── FileTransferObserver.kt
│ │ ├── FileUploader.kt
│ │ ├── ProgressCalculator.kt
│ │ ├── TransferManager.kt
│ │ ├── UploadManager.kt
│ │ └── WebFile.kt
│ ├── headers
│ │ ├── ContentDisposition.kt
│ │ ├── ContentTypes.kt
│ │ ├── Cookies.kt
│ │ ├── Header.kt
│ │ ├── Headers.kt
│ │ ├── Path.kt
│ │ ├── Range.kt
│ │ ├── RequestHeader.kt
│ │ ├── Request.kt
│ │ ├── ResponseHeader.kt
│ │ └── Response.kt
│ ├── HTTPServer.kt
│ ├── models
│ │ ├── AddTextResponse.kt
│ │ ├── AuthRequest.kt
│ │ ├── AuthResponse.kt
│ │ ├── ChangeNameRequest.kt
│ │ ├── DeletedResponse.kt
│ │ ├── DeleteMultiRequest.kt
│ │ ├── ErrorResponse.kt
│ │ ├── FileListResponse.kt
│ │ ├── FilePaginationRequest.kt
│ │ ├── FileResponse.kt
│ │ ├── FileUploadResponse.kt
│ │ ├── InfoResponse.kt
│ │ ├── MyFilesPaginationRequest.kt
│ │ ├── SignedUrlResponse.kt
│ │ ├── StatusRequest.kt
│ │ ├── StatusResponse.kt
│ │ ├── Text.kt
│ │ ├── TextPaginationRequest.kt
│ │ ├── UpdatedResponse.kt
│ │ ├── UploadInfoResponse.kt
│ │ └── ZipRequest.kt
│ ├── user
│ │ ├── FileManager.kt
│ │ ├── SignedUrlList.kt
│ │ ├── Text.kt
│ │ ├── TextManager.kt
│ │ ├── User.kt
│ │ └── UserManager.kt
│ └── utils
│ ├── FileUtil.kt
│ ├── ServerUtil.java
│ ├── TimerTaskManager.kt
│ └── Util.kt
├── ServerService.kt
├── ui
│ ├── adapters
│ │ ├── AlbumAdapter.kt
│ │ └── ImageVideoAdapter.kt
│ ├── dialogs
│ │ ├── AlbumDialog.kt
│ │ ├── DeleteConfirmationDialog.kt
│ │ ├── FileRenameChangeDialog.kt
│ │ ├── QrDialog.kt
│ │ ├── RemoveAccessConfirmationDialog.kt
│ │ ├── RequestPermissionDialog.kt
│ │ ├── SecurityDialog.kt
│ │ ├── SelectedDialog.kt
│ │ ├── SettingsMemoryLimitDialog.kt
│ │ ├── SettingsNameChangeDialog.kt
│ │ ├── SettingsPinAttemptsDialog.kt
│ │ ├── SettingsStopInactiveDialog.kt
│ │ └── ThemeDialog.kt
│ ├── frags
│ │ ├── BaseFragment.kt
│ │ ├── home
│ │ │ ├── AboutFragment.kt
│ │ │ └── HomeFragment.kt
│ │ ├── receive
│ │ │ ├── ReceiveFragment.kt
│ │ │ └── ReceiveHistoryFragment.kt
│ │ ├── send
│ │ │ ├── AppFolderFragment.kt
│ │ │ ├── AppFragment.kt
│ │ │ ├── AudioFragment.kt
│ │ │ ├── BaseFileFragment.kt
│ │ │ ├── FileFragment.kt
│ │ │ ├── ImageFragment.kt
│ │ │ ├── PictureFragment.kt
│ │ │ ├── SendFragment.kt
│ │ │ └── VideoFragment.kt
│ │ ├── ServerSettingsFragment.kt
│ │ ├── text
│ │ │ ├── AddTextFragment.kt
│ │ │ ├── TextFragment.kt
│ │ │ ├── TextHistoryFragment.kt
│ │ │ └── TextInfoFragment.kt
│ │ └── UsersFragment.kt
│ ├── MainActivity.kt
│ ├── MenuPopup.kt
│ ├── utils
│ │ ├── PermissionRequestHelper.kt
│ │ ├── QRCodeWriter.java
│ │ ├── TimeCal.kt
│ │ ├── UiUtil.kt
│ │ ├── Util.kt
│ │ └── ViewUtil.kt
│ └── views
│ ├── actionbar
│ │ └── ActionBar.kt
│ └── IconTextItemLinearLayout.kt
├── utils
│ ├── IpAddressUpdater.kt
│ ├── Log.kt
│ ├── PreferencesUtil.kt
│ ├── scan
│ │ ├── FileScan.kt
│ │ └── models
│ │ ├── Album.kt
│ │ ├── App.kt
│ │ ├── Audio.kt
│ │ ├── Data.kt
│ │ ├── Image.kt
│ │ └── Video.kt
│ └── WebFileUtil.kt
└── WebShareApp.kt
24 directories, 124 files
Web: app/src/main/assets/web
├── css
│ ├── commons.css
│ └── style.css
├── favicon.ico
├── file_not_found.html
├── fonts
│ ├── roboto_light-webfont.woff
│ ├── roboto_light-webfont.woff2
│ ├── roboto_medium-webfont.woff
│ ├── roboto_medium-webfont.woff2
│ ├── roboto_regular-webfont.woff
│ └── roboto_regular-webfont.woff2
├── images
│ ├── back.svg
│ ├── blogger.svg
│ ├── bluew.svg
│ ├── cancel.svg
│ ├── details.png
│ ├── drop.svg
│ ├── evernote.svg
│ ├── facebook.svg
│ ├── go.svg
│ ├── linkedin.svg
│ ├── menu.svg
│ ├── moon.svg
│ ├── no_access.png
│ ├── no_content.png
│ ├── no_server.png
│ ├── open.svg
│ ├── pinterest.svg
│ ├── reddit.svg
│ ├── refresh.svg
│ ├── remove_red.svg
│ ├── remove.svg
│ ├── send.svg
│ ├── settings.svg
│ ├── skype.svg
│ ├── sun.svg
│ ├── telegram.me.svg
│ ├── tumblr.svg
│ ├── twitter.svg
│ ├── unauthorized.png
│ ├── vk.svg
│ └── whatsapp.svg
├── js
│ ├── app.js
│ └── base64.min.js
├── apple-touch-icon.png
└── index.html
4 directories, 45 files
Web JS: WebShareWeb
├── api.js
├── constants.js
├── declare.js
├── init.js
├── merge.sh
├── theme.js
├── ui
│ ├── dialogs
│ │ ├── add-text-dialog.js
│ │ ├── delete-dialog.js
│ │ ├── dialog.js
│ │ ├── download-menu-dialog.js
│ │ ├── file-info-bottom-sheet.js
│ │ ├── info-dialog.js
│ │ ├── max-dialog.js
│ │ ├── name-dialog.js
│ │ ├── send-file-dialog.js
│ │ ├── share-dialog.js
│ │ └── view-text-dialog.js
│ ├── page-manager.js
│ ├── screens
│ │ ├── auth.js
│ │ ├── home
│ │ │ ├── fileinfo
│ │ │ │ ├── button.js
│ │ │ │ ├── file-info.js
│ │ │ │ ├── file-info-node.js
│ │ │ │ └── select-button.js
│ │ │ ├── files
│ │ │ │ ├── file-chooser.js
│ │ │ │ ├── file-drop-event.js
│ │ │ │ ├── file-node.js
│ │ │ │ ├── files-view.js
│ │ │ │ ├── grid-file-node.js
│ │ │ │ ├── grid-view.js
│ │ │ │ ├── list-file-node.js
│ │ │ │ ├── list-view.js
│ │ │ │ ├── search-node.js
│ │ │ │ └── selection-mode.js
│ │ │ ├── file-tab.js
│ │ │ ├── file-type-chips.js
│ │ │ ├── home.js
│ │ │ ├── sample-data.js
│ │ │ ├── tabs-node.js
│ │ │ ├── text-tab.js
│ │ │ └── viewMode.js
│ │ ├── page.js
│ │ ├── settings
│ │ │ ├── settings.js
│ │ │ └── theme-radio-button.js
│ │ └── try-again-page.js
│ ├── scroll-listener.js
│ ├── utils.js
│ └── visibility.js
└── WebShareWeb.code-workspace
7 directories, 48 files
Distributed under the GNU General Public License v3.0. See LICENSE.txt
for more information.