Fatti
Parti del procedimento: La Cassa disoccupazione Unia (ricorrente) e l'assicurato (intimato, rappresentato da un avvocato). Partecipano inoltre il Tribunale delle assicurazioni del Cantone di San Gallo (istanza precedente) e la Segreteria di Stato dell'economia (SECO), che ha rinunciato a presentare osservazioni.
Fatti: Dal 15 novembre 2013 l'assicurato era socio e amministratore con firma individuale della [B. GmbH] (GmbH unipersonale) e, contemporaneamente, era impiegato come caposquadra (gessatore). La società è stata sciolta mediante fallimento. Il 6 marzo 2017 l'assicurato si è iscritto presso l'OSRev per il collocamento. Nell'attestato del datore di lavoro del 26 aprile 2017 ha dichiarato che il rapporto di lavoro era durato fino al 30 dicembre 2016 e che l'ultimo salario mensile netto era stato di Fr. 5'000.-.
Procedura amministrativa: Con decisione del 26 luglio 2017 la Unia ha negato il diritto all'indennità di disoccupazione, poiché l'assicurato aveva una posizione assimilabile a quella di datore di lavoro e non era provato con probabilità preponderante un effettivo percepimento di salario nel periodo di computo. Con decisione su opposizione del 21 dicembre 2017 essa ha confermato tale decisione. Con decisione incidentale del 16 ottobre 2017 ha inoltre respinto la domanda di assistenza giudiziaria gratuita per la procedura di opposizione.
Istanza precedente: Il Tribunale delle assicurazioni del Cantone di San Gallo ha riunito i ricorsi, annullato la decisione su opposizione, fissato il guadagno assicurato a Fr. 3'000.- al mese, annullato la decisione incidentale del 16 ottobre 2017 e accertato che l'assicurato ha diritto a un'indennità di parte non ridotta per la procedura di opposizione. La causa è stata rinviata alla Unia per la determinazione dell'indennità.
Conclusioni davanti al Tribunale federale: La Unia chiede l'annullamento della sentenza dell'istanza precedente e la conferma della decisione su opposizione; in via eventuale chiede il rinvio a se stessa, in via subordinata all'istanza precedente. L'istanza precedente chiede la reiezione del ricorso.
Oggetto della lite: (1) Se l'istanza precedente abbia violato il diritto federale ammettendo un periodo contributivo di attività soggetta a contribuzione per il 2016 e fissando il guadagno assicurato a Fr. 3'000.-; (2) se all'assicurato sia stata concessa a ragione l'assistenza giudiziaria gratuita nella procedura di opposizione.
Diritto
Ammissibilità: Il Tribunale federale esamina liberamente i presupposti di ammissibilità. Una sentenza di rinvio costituisce in linea di principio una decisione incidentale (art. 92 e 93 LTF). Tuttavia, se all'istanza inferiore non resta alcun margine decisionale e il rinvio serve solo all'attuazione aritmetica, ad esempio alla determinazione in franchi dell'indennità di parte, si tratta materialmente di una decisione finale ai sensi dell'art. 90 LTF. Il ricorso è pertanto ammissibile.
Cognizione e grado di prova: Il Tribunale federale applica d'ufficio il diritto (art. 106 cpv. 1 LTF) e non è vincolato alla motivazione delle parti. L'accertamento dei fatti da parte dell'istanza precedente può essere corretto solo in caso di manifesta inesattezza (arbitrio) (art. 105 cpv. 2 LTF). Vi è arbitrio quando un mezzo di prova viene manifestamente travisato nel suo senso e portata, un mezzo di prova importante viene ignorato senza motivo oppure vengono tratte conclusioni insostenibili.
Periodo contributivo e prova del flusso salariale: Il periodo contributivo presuppone un'attività soggetta a contribuzione sufficientemente verificabile di almeno dodici mesi nel termine quadro (art. 8 cpv. 1 lett. e e art. 13 cpv. 1 LADI). La prova di un effettivo pagamento del salario non è un presupposto autonomo del diritto, ma costituisce un indizio rilevante. Le incertezze sull'importo del salario ricadono sull'assicurato; esse possono condurre alla negazione del diritto se il guadagno assicurato non può essere determinato in modo affidabile (art. 23 cpv. 1 LADI in combinato disposto con l'art. 40 OADI). Nel caso di una GmbH unipersonale si devono porre requisiti probatori particolarmente severi; le operazioni e i pagamenti di salario tra società e socio devono essere documentati in modo chiaro e trattati in modo contabilmente univoco. Gli attestati del datore di lavoro e i conteggi salariali costituiscono solo indizi.
Valutazione dell'istanza precedente: L'istanza precedente ha ammesso il periodo contributivo sulla base dell'attività operativa della GmbH e dei ricavi di Fr. 257'150.80, nonché della collaborazione dell'assicurato. Il Tribunale federale rileva che l'affermazione della ricorrente secondo cui l'assicurato sarebbe stato soltanto un prestanome costituisce un eventuale nuovo fatto (art. 99 cpv. 1 LTF) e che, comunque, non fa apparire manifestamente inesatta la collaborazione. L'istanza precedente ha negato, con motivazioni corrette e non contestate, la prova dei prelievi in contanti netti di Fr. 60'000.- sostenuti, poiché esistono divergenze rispetto al conto economico e alla tassazione, la registrazione ha solo natura contabile, non vi sono stati pagamenti regolari di salario di Fr. 5'000.- e prelievi irregolari in contanti possono avere anche altre finalità. La contabilità è sommaria e non è stata utilizzata come mezzo di prova dall'istanza precedente.
Arbitrio nella stima: L'istanza precedente ha attribuito al sostentamento movimenti di conto per circa Fr. 36'000.-, qualificando sempre come privati i prelievi fino a Fr. 1'000.-. Il Tribunale federale ritiene arbitraria tale premessa: l'istanza precedente non ha motivato perché il limite dovrebbe trovarsi a Fr. 1'000.-, e la sua valutazione era internamente contraddittoria, poiché alcune singole voci venivano nel contempo considerate possibilmente commerciali. Anche l'assicurato non aveva sostenuto di aver utilizzato i piccoli prelievi per il sostentamento. Né la contabilità né l'estratto conto consentono conclusioni univoche sulla natura privata o commerciale delle spese.
Esito quanto al diritto: Il guadagno assicurato fissato dall'istanza precedente a Fr. 3'000.- è…