Changeset 664 in code for trunk


Ignore:
Timestamp:
Nov 2, 2021, 10:33:17 PM (4 years ago)
Author:
contact
Message:

Make Network.Nick optional

Make Network.Nick optional, default to the user's username. This
will allow adding a global setting to set the nickname in the
future, just like we have for the real name.

References: https://todo.sr.ht/~emersion/soju/110

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/db.go

    r652 r664  
    113113}
    114114
     115func GetNick(user *User, net *Network) string {
     116        if net.Nick != "" {
     117                return net.Nick
     118        }
     119        return user.Username
     120}
     121
    115122func GetRealname(user *User, net *Network) string {
    116123        if net.Realname != "" {
     
    120127                return user.Realname
    121128        }
    122         return net.Nick
     129        return GetNick(user, net)
    123130}
    124131
  • trunk/db_postgres.go

    r652 r664  
    3737        "user" INTEGER NOT NULL REFERENCES "User"(id) ON DELETE CASCADE,
    3838        addr VARCHAR(255) NOT NULL,
    39         nick VARCHAR(255) NOT NULL,
     39        nick VARCHAR(255),
    4040        username VARCHAR(255),
    4141        realname VARCHAR(255),
     
    7878var postgresMigrations = []string{
    7979        "", // migration #0 is reserved for schema initialization
     80        `ALTER TABLE "Network" ALTER COLUMN nick DROP NOT NULL`,
    8081}
    8182
     
    260261        for rows.Next() {
    261262                var net Network
    262                 var name, username, realname, pass, connectCommands sql.NullString
     263                var name, nick, username, realname, pass, connectCommands sql.NullString
    263264                var saslMechanism, saslPlainUsername, saslPlainPassword sql.NullString
    264                 err := rows.Scan(&net.ID, &name, &net.Addr, &net.Nick, &username, &realname,
     265                err := rows.Scan(&net.ID, &name, &net.Addr, &nick, &username, &realname,
    265266                        &pass, &connectCommands, &saslMechanism, &saslPlainUsername, &saslPlainPassword,
    266267                        &net.SASL.External.CertBlob, &net.SASL.External.PrivKeyBlob, &net.Enabled)
     
    269270                }
    270271                net.Name = name.String
     272                net.Nick = nick.String
    271273                net.Username = username.String
    272274                net.Realname = realname.String
     
    292294
    293295        netName := toNullString(network.Name)
     296        nick := toNullString(network.Nick)
    294297        netUsername := toNullString(network.Username)
    295298        realname := toNullString(network.Realname)
     
    321324                        VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14)
    322325                        RETURNING id`,
    323                         userID, netName, network.Addr, network.Nick, netUsername, realname, pass, connectCommands,
     326                        userID, netName, network.Addr, nick, netUsername, realname, pass, connectCommands,
    324327                        saslMechanism, saslPlainUsername, saslPlainPassword, network.SASL.External.CertBlob,
    325328                        network.SASL.External.PrivKeyBlob, network.Enabled).Scan(&network.ID)
     
    332335                                enabled = $14
    333336                        WHERE id = $1`,
    334                         network.ID, netName, network.Addr, network.Nick, netUsername, realname, pass, connectCommands,
     337                        network.ID, netName, network.Addr, nick, netUsername, realname, pass, connectCommands,
    335338                        saslMechanism, saslPlainUsername, saslPlainPassword, network.SASL.External.CertBlob,
    336339                        network.SASL.External.PrivKeyBlob, network.Enabled)
  • trunk/db_sqlite.go

    r663 r664  
    2929        user INTEGER NOT NULL,
    3030        addr TEXT NOT NULL,
    31         nick TEXT NOT NULL,
     31        nick TEXT,
    3232        username TEXT,
    3333        realname TEXT,
     
    139139        "ALTER TABLE Network ADD COLUMN enabled INTEGER NOT NULL DEFAULT 1",
    140140        "ALTER TABLE User ADD COLUMN realname VARCHAR(255)",
     141        `
     142                CREATE TABLE NetworkNew (
     143                        id INTEGER PRIMARY KEY,
     144                        name TEXT,
     145                        user INTEGER NOT NULL,
     146                        addr TEXT NOT NULL,
     147                        nick TEXT,
     148                        username TEXT,
     149                        realname TEXT,
     150                        pass TEXT,
     151                        connect_commands TEXT,
     152                        sasl_mechanism TEXT,
     153                        sasl_plain_username TEXT,
     154                        sasl_plain_password TEXT,
     155                        sasl_external_cert BLOB,
     156                        sasl_external_key BLOB,
     157                        enabled INTEGER NOT NULL DEFAULT 1,
     158                        FOREIGN KEY(user) REFERENCES User(id),
     159                        UNIQUE(user, addr, nick),
     160                        UNIQUE(user, name)
     161                );
     162                INSERT INTO NetworkNew
     163                        SELECT id, name, user, addr, nick, username, realname, pass,
     164                                connect_commands, sasl_mechanism, sasl_plain_username,
     165                                sasl_plain_password, sasl_external_cert, sasl_external_key,
     166                                enabled
     167                        FROM Network;
     168                DROP TABLE Network;
     169                ALTER TABLE NetworkNew RENAME TO Network;
     170        `,
    141171}
    142172
     
    394424        for rows.Next() {
    395425                var net Network
    396                 var name, username, realname, pass, connectCommands sql.NullString
     426                var name, nick, username, realname, pass, connectCommands sql.NullString
    397427                var saslMechanism, saslPlainUsername, saslPlainPassword sql.NullString
    398                 err := rows.Scan(&net.ID, &name, &net.Addr, &net.Nick, &username, &realname,
     428                err := rows.Scan(&net.ID, &name, &net.Addr, &nick, &username, &realname,
    399429                        &pass, &connectCommands, &saslMechanism, &saslPlainUsername, &saslPlainPassword,
    400430                        &net.SASL.External.CertBlob, &net.SASL.External.PrivKeyBlob, &net.Enabled)
     
    403433                }
    404434                net.Name = name.String
     435                net.Nick = nick.String
    405436                net.Username = username.String
    406437                net.Realname = realname.String
     
    447478                sql.Named("name", toNullString(network.Name)),
    448479                sql.Named("addr", network.Addr),
    449                 sql.Named("nick", network.Nick),
     480                sql.Named("nick", toNullString(network.Nick)),
    450481                sql.Named("username", toNullString(network.Username)),
    451482                sql.Named("realname", toNullString(network.Realname)),
  • trunk/downstream.go

    r662 r664  
    103103                "name":     irc.TagValue(network.GetName()),
    104104                "state":    irc.TagValue(state),
    105                 "nickname": irc.TagValue(network.Nick),
     105                "nickname": irc.TagValue(GetNick(&network.user.User, &network.Network)),
    106106        }
    107107
     
    336336        // configured nickname and hope it was the one being used when we were
    337337        // connected.
    338         return net.casemap(nick) == net.casemap(net.Nick)
     338        return net.casemap(nick) == net.casemap(GetNick(&net.user.User, &net.Network))
    339339}
    340340
     
    24152415                        }
    24162416
     2417                        if record.Nick == dc.user.Username {
     2418                                record.Nick = ""
     2419                        }
    24172420                        if record.Realname == dc.user.Realname {
    24182421                                record.Realname = ""
     
    24562459                        }
    24572460
     2461                        if record.Nick == dc.user.Username {
     2462                                record.Nick = ""
     2463                        }
    24582464                        if record.Realname == dc.user.Realname {
    24592465                                record.Realname = ""
  • trunk/service.go

    r652 r664  
    485485        record := &Network{
    486486                Addr:    *fs.Addr,
    487                 Nick:    dc.nick,
    488487                Enabled: true,
    489488        }
  • trunk/upstream.go

    r660 r664  
    16721672
    16731673func (uc *upstreamConn) register() {
    1674         uc.nick = uc.network.Nick
     1674        uc.nick = GetNick(&uc.user.User, &uc.network.Network)
    16751675        uc.nickCM = uc.network.casemap(uc.nick)
    16761676        uc.username = uc.network.GetUsername()
Note: See TracChangeset for help on using the changeset viewer.