3 Commits

Author SHA1 Message Date
bobbydigitales
f387d9ea48 fix politeness 2026-03-02 23:10:18 -08:00
96ea7d56f9 Add README.md 2026-02-22 23:14:24 -08:00
bf3eb0ae9f Merge pull request 'bobbyd-show-single-post' (#1) from bobbyd-show-single-post into main
Reviewed-on: #1
2026-02-22 22:49:24 -08:00
4 changed files with 20 additions and 7 deletions

2
README.md Normal file
View File

@@ -0,0 +1,2 @@
# Intro
Dandelion is an experimental social network designed to let you build online communites that will last for 100 years.

View File

@@ -149,10 +149,11 @@ export class PeerManager {
if (!peerConnection) { if (!peerConnection) {
let remotePeerID = message.from; let remotePeerID = message.from;
let newPeer = new PeerConnection(this, remotePeerID, this.websocketSendPeerMessage.bind(this)); let newPeer = new PeerConnection(this, remotePeerID, this.websocketSendPeerMessage.bind(this));
if (this._isBootstrapPeer) {
newPeer.setPolite(false); newPeer.setPoliteFromID(remotePeerID, true);
}
peerConnection = newPeer; peerConnection = newPeer;
this.peers.set(newPeer.remotePeerID, newPeer); this.peers.set(newPeer.remotePeerID, newPeer);
this.onConnectRequest(newPeer); this.onConnectRequest(newPeer);
@@ -580,6 +581,12 @@ class PeerConnection {
this.polite = polite; this.polite = polite;
} }
setPoliteFromID(peerID: PeerID, remote = false) {
let polite = (parseInt(peerID.charAt(peerID.length-1), 16) % 2 == 0) && !remote;
this.setPolite(polite);
}
setupDataChannel() { setupDataChannel() {
if (!this.dataChannel) { if (!this.dataChannel) {
throw new Error(); throw new Error();
@@ -713,6 +720,7 @@ class PeerConnection {
try { try {
this.makingOffer = true; this.makingOffer = true;
this.setPoliteFromID(this.peerManager.peerID);
await this.rtcPeer.setLocalDescription(); await this.rtcPeer.setLocalDescription();
if (!this.rtcPeer.localDescription) { if (!this.rtcPeer.localDescription) {

View File

@@ -82,9 +82,7 @@ export class PeerManager {
if (!peerConnection) { if (!peerConnection) {
let remotePeerID = message.from; let remotePeerID = message.from;
let newPeer = new PeerConnection(this, remotePeerID, this.websocketSendPeerMessage.bind(this)); let newPeer = new PeerConnection(this, remotePeerID, this.websocketSendPeerMessage.bind(this));
if (this._isBootstrapPeer) { newPeer.setPoliteFromID(remotePeerID, true);
newPeer.setPolite(false);
}
peerConnection = newPeer; peerConnection = newPeer;
this.peers.set(newPeer.remotePeerID, newPeer); this.peers.set(newPeer.remotePeerID, newPeer);
this.onConnectRequest(newPeer); this.onConnectRequest(newPeer);
@@ -417,6 +415,10 @@ class PeerConnection {
setPolite(polite) { setPolite(polite) {
this.polite = polite; this.polite = polite;
} }
setPoliteFromID(peerID, remote = false) {
let polite = (parseInt(peerID.charAt(peerID.length - 1), 16) % 2 == 0) && !remote;
this.setPolite(polite);
}
setupDataChannel() { setupDataChannel() {
if (!this.dataChannel) { if (!this.dataChannel) {
throw new Error(); throw new Error();
@@ -513,6 +515,7 @@ class PeerConnection {
} }
try { try {
this.makingOffer = true; this.makingOffer = true;
this.setPoliteFromID(this.peerManager.peerID);
await this.rtcPeer.setLocalDescription(); await this.rtcPeer.setLocalDescription();
if (!this.rtcPeer.localDescription) { if (!this.rtcPeer.localDescription) {
return; return;

File diff suppressed because one or more lines are too long