Comments
This commit is contained in:
		
							parent
							
								
									c124434429
								
							
						
					
					
						commit
						09336fa1e4
					
				
					 9 changed files with 32 additions and 33 deletions
				
			
		|  | @ -2,6 +2,16 @@ | |||
| Binaries for all releases can be found on the GitHub releases pages for the [ntfy server](https://github.com/binwiederhier/ntfy/releases) | ||||
| and the [ntfy Android app](https://github.com/binwiederhier/ntfy-android/releases). | ||||
| 
 | ||||
| ## ntfy server v1.17.0 | ||||
| Released Mar 11, 2022 | ||||
| 
 | ||||
| **Features & bug fixes:** | ||||
| 
 | ||||
| * Replace [web app](https://ntfy.sh/app) with a React/MUI-based web app from the 21st century (#111) | ||||
| * Web UI broken with auth (#132, thanks for reporting @arminus) | ||||
| * Send static web resources as `Content-Encoding: gzip`, i.e. docs and web app (no ticket) | ||||
| * Add support for auth via `?auth=...` query param, used by WebSocket in web app (no ticket)  | ||||
| 
 | ||||
| ## ntfy server v1.16.0 | ||||
| Released Feb 27, 2022 | ||||
| 
 | ||||
|  |  | |||
|  | @ -34,7 +34,7 @@ | |||
| </head> | ||||
| <body> | ||||
|   <noscript> | ||||
|     ntfy web requires JavaScript, but you can use the <a href="https://ntfy.sh/docs/subscribe/cli/">CLI</a> | ||||
|     ntfy web requires JavaScript, but you can also use the <a href="https://ntfy.sh/docs/subscribe/cli/">CLI</a> | ||||
|     or <a href="https://ntfy.sh/docs/subscribe/phone/">Android/iOS app</a> to subscribe. | ||||
|   </noscript> | ||||
|   <div id="root"></div> | ||||
|  |  | |||
|  | @ -265,29 +265,6 @@ figcaption { | |||
|     text-decoration: underline; | ||||
| } | ||||
| 
 | ||||
| /* Subscribe box */ | ||||
| 
 | ||||
| button { | ||||
|     background: #3a9784; | ||||
|     border: none; | ||||
|     border-radius: 3px; | ||||
|     padding: 3px 5px; | ||||
|     color: white; | ||||
|     cursor: pointer; | ||||
| } | ||||
| 
 | ||||
| button:hover { | ||||
|     background: #317f6f; | ||||
|     padding: 5px; | ||||
| } | ||||
| 
 | ||||
| ul { | ||||
|     padding-left: 1em; | ||||
|     list-style-type: circle; | ||||
|     padding-bottom: 0; | ||||
|     margin: 0; | ||||
| } | ||||
| 
 | ||||
| li { | ||||
|     padding: 4px 0; | ||||
|     margin: 4px 0; | ||||
|  |  | |||
|  | @ -1,12 +1,4 @@ | |||
| 
 | ||||
| /** | ||||
|  * Hello, dear curious visitor. I am not a web-guy, so please don't judge my horrible JS code. | ||||
|  * In fact, please do tell me about all the things I did wrong and that I could improve. I've been trying | ||||
|  * to read up on modern JS, but it's just a little much. | ||||
|  * | ||||
|  * Feel free to open tickets at https://github.com/binwiederhier/ntfy/issues. Thank you!
 | ||||
|  */ | ||||
| 
 | ||||
| /* All the things */ | ||||
| 
 | ||||
| let currentUrl = window.location.hostname; | ||||
|  |  | |||
|  | @ -2,6 +2,12 @@ import {basicAuth, encodeBase64Url, topicShortUrl, topicUrlWs} from "./utils"; | |||
| 
 | ||||
| const retryBackoffSeconds = [5, 10, 15, 20, 30]; | ||||
| 
 | ||||
| /** | ||||
|  * A connection contains a single WebSocket connection for one topic. It handles its connection | ||||
|  * status itself, including reconnect attempts and backoff. | ||||
|  * | ||||
|  * Incoming messages and state changes are forwarded via listeners. | ||||
|  */ | ||||
| class Connection { | ||||
|     constructor(connectionId, subscriptionId, baseUrl, topic, user, since, onNotification, onStateChanged) { | ||||
|         this.connectionId = connectionId; | ||||
|  |  | |||
|  | @ -1,6 +1,12 @@ | |||
| import Connection from "./Connection"; | ||||
| import {sha256} from "./utils"; | ||||
| 
 | ||||
| /** | ||||
|  * The connection manager keeps track of active connections (WebSocket connections, see Connection). | ||||
|  * | ||||
|  * Its refresh() method reconciles state changes with the target state by closing/opening connections | ||||
|  * as required. This is done pretty much exactly the same way as in the Android app. | ||||
|  */ | ||||
| class ConnectionManager { | ||||
|     constructor() { | ||||
|         this.connections = new Map(); // ConnectionId -> Connection (hash, see below)
 | ||||
|  |  | |||
|  | @ -3,6 +3,10 @@ import prefs from "./Prefs"; | |||
| import subscriptionManager from "./SubscriptionManager"; | ||||
| import logo from "../img/ntfy.png"; | ||||
| 
 | ||||
| /** | ||||
|  * The notifier is responsible for displaying desktop notifications. Note that not all modern browsers | ||||
|  * support this; most importantly, all iOS browsers do not support window.Notification. | ||||
|  */ | ||||
| class Notifier { | ||||
|     async notify(subscriptionId, notification, onClickFallback) { | ||||
|         if (!this.supported()) { | ||||
|  |  | |||
|  | @ -85,7 +85,7 @@ const SubscribePage = (props) => { | |||
|             const isExistingTopicUrl = existingTopicUrls.includes(topicUrl(baseUrl, topic)); | ||||
|             return validTopic(topic) && validUrl(baseUrl) && !isExistingTopicUrl; | ||||
|         } else { | ||||
|             const isExistingTopicUrl = existingTopicUrls.includes(topicUrl(window.location.origin, topic)); // FIXME
 | ||||
|             const isExistingTopicUrl = existingTopicUrls.includes(topicUrl(window.location.origin, topic)); | ||||
|             return validTopic(topic) && !isExistingTopicUrl; | ||||
|         } | ||||
|     })(); | ||||
|  |  | |||
|  | @ -66,6 +66,10 @@ export const useAutoSubscribe = (subscriptions, selected) => { | |||
|     }, [params, subscriptions, selected, hasRun]); | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Migrate the 'topics' item in localStorage to the subscriptionManager. This is only done once to migrate away | ||||
|  * from the old web UI. | ||||
|  */ | ||||
| export const useLocalStorageMigration = () => { | ||||
|     const [hasRun, setHasRun] = useState(false); | ||||
|     useEffect(() => { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue